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);
     }

Reply via email to