[ 
https://issues.apache.org/jira/browse/FREEMARKER-84?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16384666#comment-16384666
 ] 

Taher Alkhateeb commented on FREEMARKER-84:
-------------------------------------------

Thank you Daniel. Things are making more sense now. It's not always a straight 
forward path because you carry history with you. And if I'm not mistaken, most 
of the secret sauce for parsing is really in the "exec" method. That's where 
the actual implementation is happening and where you do the validation and 
model construction using {{TemplateMethodModelEx}}. I have a lot to learn, but 
very informative nonetheless. I can also see how probably the most core 
interface in the system is the TemplateModel and everything sort of operates 
around it. Nice!

 

> Improve include directive to detect whether template exists
> -----------------------------------------------------------
>
>                 Key: FREEMARKER-84
>                 URL: https://issues.apache.org/jira/browse/FREEMARKER-84
>             Project: Apache Freemarker
>          Issue Type: Improvement
>          Components: engine
>    Affects Versions: 2.3.27-incubating
>            Reporter: Yanming Zhou
>            Priority: Major
>             Fix For: 2.3.28-incubating
>
>
> I requested feature `ignore_missing=true` of <#include> and freemarker have 
> implemented it, but it cannot handle fallback like
> {code}
> <#assign path="relative.ftl">
> <#if isTemplatePresent(path)>
> <#include path>
> <#else>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 1:
> Introduce a new special variable like "template_included" similar to "$?" of 
> shell exit code
> {code}
> <#include path ignore_missing=true>
> <#if !.template_included>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 2:
> Add an argument like "template_included" for include directive
> {code}
> <#include path ignore_missing=true template_included="pathExists">
> <#if !pathExists>
> template "${path}" is not exists
> </#if>
> {code}
> Proposal 3:
> Introduce a new special directive such as <#missing> similar to html 
> <noscript> tag
> {code}
> <#include path>
> <#missing>
> template "${path}" is not exists
> </#missing>
> </#include>
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to