This is an automated email from the ASF dual-hosted git repository. ddekany pushed a commit to branch 3 in repository https://gitbox.apache.org/repos/asf/freemarker.git
commit c50d2a9f71a5f089f7ab475d433b764c950336a8 Author: ddekany <[email protected]> AuthorDate: Sun Feb 7 18:08:06 2021 +0100 Forward ported from 2.3-gae: Added new special variable, time_zone (referred like .time_zone, like all special variables), to retrieve the current value of the time_zone setting as a string. --- .../apache/freemarker/core/templatesuite/expected/specialvars.txt | 1 + .../apache/freemarker/core/templatesuite/templates/setting.f3ac | 2 ++ .../freemarker/core/templatesuite/templates/specialvars.f3ac | 1 + .../java/org/apache/freemarker/core/ASTExpBuiltInVariable.java | 7 ++++++- 4 files changed, 10 insertions(+), 1 deletion(-) diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/specialvars.txt b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/specialvars.txt index 28bcc4b..4414c33 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/specialvars.txt +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/expected/specialvars.txt @@ -18,6 +18,7 @@ */ en == en en_US == en_US +GMT+01:00 == GMT+01:00 utf-8 == utf-8 specialvars.f3ac == specialvars.f3ac iso-8859-1 == iso-8859-1 diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.f3ac b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.f3ac index 0febdef..68c31ce 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.f3ac +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/setting.f3ac @@ -38,7 +38,9 @@ <#setting timeZone='GMT+00'> <#assign t1='2000'?dateTime('yyyy')> +<@assertEquals expected='GMT+00:00' actual=.timeZone /> <#setting timeZone='GMT+01'> +<@assertEquals expected='GMT+01:00' actual=.timeZone /> <#assign t2='2000'?dateTime('yyyy')> <@assertEquals expected=1000*60*60 actual=t1?long-t2?long /> diff --git a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/specialvars.f3ac b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/specialvars.f3ac index b67991f..9db3a7e 100644 --- a/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/specialvars.f3ac +++ b/freemarker-core-test/src/test/resources/org/apache/freemarker/core/templatesuite/templates/specialvars.f3ac @@ -26,6 +26,7 @@ <#assign works = .globals> ${.lang} == en ${.locale} == en_US +${.timeZone} == GMT+01:00 <#assign works = .locals!> <#assign works = .main> <#assign works = .node!> 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 d3760a0..913eb11 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 @@ -48,6 +48,7 @@ final class ASTExpBuiltInVariable extends ASTExpression { static final String LANG = "lang"; static final String LOCALE = MutableProcessingConfiguration.LOCALE_KEY; static final String LOCALE_OBJECT = MutableProcessingConfiguration.LOCALE_KEY + "Object"; + static final String TIME_ZONE = MutableProcessingConfiguration.TIME_ZONE_KEY; static final String NODE = "node"; static final String PASS = "pass"; static final String VARS = "vars"; @@ -84,6 +85,7 @@ final class ASTExpBuiltInVariable extends ASTExpression { OUTPUT_ENCODING, OUTPUT_FORMAT, PASS, + TIME_ZONE, URL_ESCAPING_CHARSET, VARS, VERSION @@ -214,7 +216,10 @@ final class ASTExpBuiltInVariable extends ASTExpression { String name = ctx.callPlace.getTemplate().getLookupName(); return name != null ? new SimpleString(name) : TemplateStringModel.EMPTY_STRING; } - + if (name == TIME_ZONE) { + return new SimpleString(env.getTimeZone().getID()); + } + throw new TemplateException(this, "Invalid special variable: ", name); }
