You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2021/02/07 17:14:55 UTC
[freemarker] 03/03: 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.
This is an automated email from the ASF dual-hosted git repository.
ddekany pushed a commit to branch 2.3-gae
in repository https://gitbox.apache.org/repos/asf/freemarker.git
commit 65c8b98a0f64bd33803f6042ff0707e2774dda3c
Author: ddekany <dd...@apache.org>
AuthorDate: Sun Feb 7 18:07:26 2021 +0100
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.
---
src/main/java/freemarker/core/BuiltinVariable.java | 7 +++++++
src/manual/en_US/book.xml | 19 +++++++++++++++++++
src/test/java/freemarker/core/CamelCaseTest.java | 3 +++
.../test/templatesuite/expected/specialvars.txt | 1 +
.../test/templatesuite/templates/setting.ftl | 2 ++
.../test/templatesuite/templates/specialvars.ftl | 1 +
6 files changed, 33 insertions(+)
diff --git a/src/main/java/freemarker/core/BuiltinVariable.java b/src/main/java/freemarker/core/BuiltinVariable.java
index b5ec4b7..ccc9d0b 100644
--- a/src/main/java/freemarker/core/BuiltinVariable.java
+++ b/src/main/java/freemarker/core/BuiltinVariable.java
@@ -56,6 +56,8 @@ final class BuiltinVariable extends Expression {
static final String LOCALE = Configurable.LOCALE_KEY;
static final String LOCALE_OBJECT_CC = Configurable.LOCALE_KEY_CAMEL_CASE + "Object";
static final String LOCALE_OBJECT = Configurable.LOCALE_KEY + "_object";
+ static final String TIME_ZONE_CC = Configurable.TIME_ZONE_KEY_CAMEL_CASE;
+ static final String TIME_ZONE = Configurable.TIME_ZONE_KEY;
static final String CURRENT_NODE_CC = "currentNode";
static final String CURRENT_NODE = "current_node";
static final String NODE = "node";
@@ -116,6 +118,8 @@ final class BuiltinVariable extends Expression {
PASS,
TEMPLATE_NAME_CC,
TEMPLATE_NAME,
+ TIME_ZONE_CC,
+ TIME_ZONE,
URL_ESCAPING_CHARSET_CC,
URL_ESCAPING_CHARSET,
VARS,
@@ -270,6 +274,9 @@ final class BuiltinVariable extends Expression {
}
return args;
}
+ if (name == TIME_ZONE || name == TIME_ZONE_CC) {
+ return new SimpleScalar(env.getTimeZone().getID());
+ }
throw new _MiscTemplateException(this,
"Invalid special variable: ", name);
diff --git a/src/manual/en_US/book.xml b/src/manual/en_US/book.xml
index b6682b9..8ef2763 100644
--- a/src/manual/en_US/book.xml
+++ b/src/manual/en_US/book.xml
@@ -25469,6 +25469,18 @@ There was no specific handler for node y
contains dash and further info after the numbers, like in
2.3.21-nightly_20140726T151800Z.</para>
</listitem>
+
+ <listitem>
+ <para><indexterm>
+ <primary>time zone</primary>
+ </indexterm><indexterm>
+ <primary>time_zone</primary>
+ </indexterm><literal>time_zone</literal> (exists since FreeMarker
+ 2.3.31): The current value of the <literal>time_zone</literal>
+ setting, as a string. This is the ID of the time zone, like
+ <literal>GMT+01:00</literal>, or
+ <literal>America/Los_Angeles</literal>.</para>
+ </listitem>
</itemizedlist>
<simplesect xml:id="ref_specvar_get_optional_template">
@@ -29419,6 +29431,13 @@ TemplateModel x = env.getVariable("x"); // get variable x</programlisting>
</listitem>
<listitem>
+ <para>Added new special variable, <literal>time_zone</literal>
+ (referred like <literal>.time_zone</literal>, like all special
+ variables), to retrieve the current value of the
+ <literal>time_zone</literal> setting as a string.</para>
+ </listitem>
+
+ <listitem>
<para>Allowed escaping <literal>#</literal> with backlash in
identifier names (not in string), as it used to occur in
database column names. Like if you have a column name like
diff --git a/src/test/java/freemarker/core/CamelCaseTest.java b/src/test/java/freemarker/core/CamelCaseTest.java
index b1e1dcd..4e5d537 100644
--- a/src/test/java/freemarker/core/CamelCaseTest.java
+++ b/src/test/java/freemarker/core/CamelCaseTest.java
@@ -25,6 +25,7 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
+import java.util.TimeZone;
import org.junit.Test;
@@ -43,6 +44,8 @@ public class CamelCaseTest extends TemplateTest {
assertOutput("${.data_model?is_hash?c}", "true");
assertOutput("${.localeObject.toString()}", "de_DE");
assertOutput("${.locale_object.toString()}", "de_DE");
+ assertOutput("${.time_zone}", getConfiguration().getTimeZone().getID());
+ assertOutput("${.timeZone}", getConfiguration().getTimeZone().getID());
assertOutput("${.templateName?length}", "0");
assertOutput("${.template_name?length}", "0");
assertOutput("${.outputEncoding}", "utf-8");
diff --git a/src/test/resources/freemarker/test/templatesuite/expected/specialvars.txt b/src/test/resources/freemarker/test/templatesuite/expected/specialvars.txt
index e2fa13e..2c7bac3 100644
--- a/src/test/resources/freemarker/test/templatesuite/expected/specialvars.txt
+++ b/src/test/resources/freemarker/test/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.ftl == specialvars.ftl
iso-8859-1 == iso-8859-1
diff --git a/src/test/resources/freemarker/test/templatesuite/templates/setting.ftl b/src/test/resources/freemarker/test/templatesuite/templates/setting.ftl
index fcf9605..715bbe2 100644
--- a/src/test/resources/freemarker/test/templatesuite/templates/setting.ftl
+++ b/src/test/resources/freemarker/test/templatesuite/templates/setting.ftl
@@ -37,8 +37,10 @@
<@assertEquals expected='dtf' actual=.now?string />
<#setting time_zone='GMT+00'>
+<@assertEquals expected='GMT+00:00' actual=.time_zone />
<#assign t1='2000'?datetime('yyyy')>
<#setting time_zone='GMT+01'>
+<@assertEquals expected='GMT+01:00' actual=.time_zone />
<#assign t2='2000'?datetime('yyyy')>
<@assertEquals expected=1000*60*60 actual=t1?long-t2?long />
diff --git a/src/test/resources/freemarker/test/templatesuite/templates/specialvars.ftl b/src/test/resources/freemarker/test/templatesuite/templates/specialvars.ftl
index 50416c9..abf53df 100644
--- a/src/test/resources/freemarker/test/templatesuite/templates/specialvars.ftl
+++ b/src/test/resources/freemarker/test/templatesuite/templates/specialvars.ftl
@@ -26,6 +26,7 @@
<#assign works = .globals>
${.lang} == en
${.locale} == en_US
+${.time_zone} == GMT+01:00
<#assign works = .locals!>
<#assign works = .main>
<#assign works = .node!>