Repository: incubator-freemarker Updated Branches: refs/heads/3 e4207a53e -> 63173f9ac
Forward ported .macroCallerTemplateName from 2.3-gae Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/63173f9a Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/63173f9a Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/63173f9a Branch: refs/heads/3 Commit: 63173f9ac26893eae1084fa9cfa4eb3c18754122 Parents: e4207a5 Author: ddekany <ddek...@apache.org> Authored: Fri Mar 9 22:09:56 2018 +0100 Committer: ddekany <ddek...@apache.org> Committed: Fri Mar 9 22:09:56 2018 +0100 ---------------------------------------------------------------------- .../apache/freemarker/core/ASTExpBuiltInVariable.java | 13 +++++++++++++ 1 file changed, 13 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/63173f9a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java ---------------------------------------------------------------------- diff --git a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java index b9d2f12..ecfa9cf 100644 --- a/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java +++ b/freemarker-core/src/main/java/org/apache/freemarker/core/ASTExpBuiltInVariable.java @@ -23,9 +23,11 @@ import java.nio.charset.Charset; import java.util.Date; import java.util.Set; +import org.apache.freemarker.core.ASTDirMacroOrFunction.Context; import org.apache.freemarker.core.model.TemplateDateModel; import org.apache.freemarker.core.model.TemplateHashModel; import org.apache.freemarker.core.model.TemplateModel; +import org.apache.freemarker.core.model.TemplateStringModel; import org.apache.freemarker.core.model.impl.SimpleDate; import org.apache.freemarker.core.model.impl.SimpleString; import org.apache.freemarker.core.util._SortedArraySet; @@ -58,6 +60,7 @@ final class ASTExpBuiltInVariable extends ASTExpression { static final String URL_ESCAPING_CHARSET = "urlEscapingCharset"; static final String NOW = "now"; static final String GET_OPTIONAL_TEMPLATE = "getOptionalTemplate"; + static final String MACRO_CALLER_TEMPLATE_NAME = "macroCallerTemplateName"; static final Set<String> BUILT_IN_VARIABLE_NAMES = new _SortedArraySet<>( // Must be sorted alphabetically! @@ -72,6 +75,7 @@ final class ASTExpBuiltInVariable extends ASTExpression { LOCALE, LOCALE_OBJECT, LOCALS, + MACRO_CALLER_TEMPLATE_NAME, MAIN, MAIN_TEMPLATE_NAME, NAMESPACE, @@ -199,6 +203,15 @@ final class ASTExpBuiltInVariable extends ASTExpression { if (name == GET_OPTIONAL_TEMPLATE) { return GetOptionalTemplateFunction.INSTANCE; } + if (name == MACRO_CALLER_TEMPLATE_NAME) { + Context ctx = env.getCurrentMacroContext(); + if (ctx == null) { + throw new TemplateException("Can't get " + MACRO_CALLER_TEMPLATE_NAME + + " here, as there's no macro caller at this point."); + } + String name = ctx.callPlace.getTemplate().getLookupName(); + return name != null ? new SimpleString(name) : TemplateStringModel.EMPTY_STRING; + } throw new TemplateException(this, "Invalid special variable: ", name);