[
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)