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 2017/03/03 20:53:04 UTC
incubator-freemarker git commit: Removed long deprecated <#transform
...>...#transform> directive.
Repository: incubator-freemarker
Updated Branches:
refs/heads/3 b67faaa7f -> 9047d13b9
Removed long deprecated <#transform ...>...</#transform> directive.
Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/commit/9047d13b
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/tree/9047d13b
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker/diff/9047d13b
Branch: refs/heads/3
Commit: 9047d13b95b89cee481aa8e4e61bb4cdcf9f1c57
Parents: b67faaa
Author: ddekany <dd...@apache.org>
Authored: Fri Mar 3 21:52:55 2017 +0100
Committer: ddekany <dd...@apache.org>
Committed: Fri Mar 3 21:52:55 2017 +0100
----------------------------------------------------------------------
.../apache/freemarker/core/ASTDirTransform.java | 162 -------------------
.../apache/freemarker/core/ASTDirective.java | 1 -
.../apache/freemarker/core/ParseException.java | 3 -
src/main/javacc/FTL.jj | 42 -----
src/manual/en_US/FM3-CHANGE-LOG.txt | 5 +-
.../test/templatesuite/templates/interpret.ftl | 6 +-
.../test/templatesuite/templates/newlines2.ftl | 4 +-
.../templates/string-builtins1.ftl | 2 +-
8 files changed, 9 insertions(+), 216 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/main/java/org/apache/freemarker/core/ASTDirTransform.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ASTDirTransform.java b/src/main/java/org/apache/freemarker/core/ASTDirTransform.java
deleted file mode 100644
index 2789ae4..0000000
--- a/src/main/java/org/apache/freemarker/core/ASTDirTransform.java
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.freemarker.core;
-
-import java.io.IOException;
-import java.lang.ref.Reference;
-import java.lang.ref.SoftReference;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.freemarker.core.model.TemplateModel;
-import org.apache.freemarker.core.model.TemplateTransformModel;
-
-/**
- * AST directive node: {@code #transform}.
- */
-final class ASTDirTransform extends ASTDirective {
-
- private ASTExpression transformExpression;
- Map namedArgs;
- private transient volatile SoftReference/*List<Map.Entry<String,ASTExpression>>*/ sortedNamedArgsCache;
-
- ASTDirTransform(ASTExpression transformExpression,
- Map namedArgs,
- TemplateElements children) {
- this.transformExpression = transformExpression;
- this.namedArgs = namedArgs;
- setChildren(children);
- }
-
- @Override
- ASTElement[] accept(Environment env)
- throws TemplateException, IOException {
- TemplateTransformModel ttm = env.getTransform(transformExpression);
- if (ttm != null) {
- Map args;
- if (namedArgs != null && !namedArgs.isEmpty()) {
- args = new HashMap();
- for (Iterator it = namedArgs.entrySet().iterator(); it.hasNext(); ) {
- Map.Entry entry = (Map.Entry) it.next();
- String key = (String) entry.getKey();
- ASTExpression valueExp = (ASTExpression) entry.getValue();
- TemplateModel value = valueExp.eval(env);
- args.put(key, value);
- }
- } else {
- args = Collections.emptyMap();
- }
- env.visitAndTransform(getChildBuffer(), ttm, args);
- } else {
- TemplateModel tm = transformExpression.eval(env);
- throw new UnexpectedTypeException(
- transformExpression, tm,
- "transform", new Class[] { TemplateTransformModel.class }, env);
- }
- return null;
- }
-
- @Override
- protected String dump(boolean canonical) {
- StringBuilder sb = new StringBuilder();
- if (canonical) sb.append('<');
- sb.append(getNodeTypeSymbol());
- sb.append(' ');
- sb.append(transformExpression);
- if (namedArgs != null) {
- for (Iterator it = getSortedNamedArgs().iterator(); it.hasNext(); ) {
- Map.Entry entry = (Map.Entry) it.next();
- sb.append(' ');
- sb.append(entry.getKey());
- sb.append('=');
- MessageUtil.appendExpressionAsUntearable(sb, (ASTExpression) entry.getValue());
- }
- }
- if (canonical) {
- sb.append(">");
- sb.append(getChildrenCanonicalForm());
- sb.append("</").append(getNodeTypeSymbol()).append('>');
- }
- return sb.toString();
- }
-
- @Override
- String getNodeTypeSymbol() {
- return "#transform";
- }
-
- @Override
- int getParameterCount() {
- return 1/*nameExp*/ + (namedArgs != null ? namedArgs.size() * 2 : 0);
- }
-
- @Override
- Object getParameterValue(int idx) {
- if (idx == 0) {
- return transformExpression;
- } else if (namedArgs != null && idx - 1 < namedArgs.size() * 2) {
- Map.Entry namedArg = (Map.Entry) getSortedNamedArgs().get((idx - 1) / 2);
- return (idx - 1) % 2 == 0 ? namedArg.getKey() : namedArg.getValue();
- } else {
- throw new IndexOutOfBoundsException();
- }
- }
-
- @Override
- ParameterRole getParameterRole(int idx) {
- if (idx == 0) {
- return ParameterRole.CALLEE;
- } else if (idx - 1 < namedArgs.size() * 2) {
- return (idx - 1) % 2 == 0 ? ParameterRole.ARGUMENT_NAME : ParameterRole.ARGUMENT_VALUE;
- } else {
- throw new IndexOutOfBoundsException();
- }
- }
-
- /**
- * Returns the named args by source-code order; it's not meant to be used during template execution, too slow for
- * that!
- */
- private List/*<Map.Entry<String, ASTExpression>>*/ getSortedNamedArgs() {
- Reference ref = sortedNamedArgsCache;
- if (ref != null) {
- List res = (List) ref.get();
- if (res != null) return res;
- }
-
- List res = MiscUtil.sortMapOfExpressions(namedArgs);
- sortedNamedArgsCache = new SoftReference(res);
- return res;
- }
-
- @Override
- boolean isNestedBlockRepeater() {
- return false;
- }
-
- @Override
- boolean isShownInStackTrace() {
- return true;
- }
-
-}
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/main/java/org/apache/freemarker/core/ASTDirective.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ASTDirective.java b/src/main/java/org/apache/freemarker/core/ASTDirective.java
index c1bf03f..3506036 100644
--- a/src/main/java/org/apache/freemarker/core/ASTDirective.java
+++ b/src/main/java/org/apache/freemarker/core/ASTDirective.java
@@ -89,7 +89,6 @@ abstract class ASTDirective extends ASTElement {
addName(allNames, lcNames, ccNames, "stop");
addName(allNames, lcNames, ccNames, "switch");
addName(allNames, lcNames, ccNames, "t");
- addName(allNames, lcNames, ccNames, "transform");
addName(allNames, lcNames, ccNames, "visit");
ALL_BUILT_IN_DIRECTIVE_NAMES = Collections.unmodifiableSet(allNames);
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/main/java/org/apache/freemarker/core/ParseException.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/freemarker/core/ParseException.java b/src/main/java/org/apache/freemarker/core/ParseException.java
index 94304d9..dcb0f46 100644
--- a/src/main/java/org/apache/freemarker/core/ParseException.java
+++ b/src/main/java/org/apache/freemarker/core/ParseException.java
@@ -397,9 +397,6 @@ public class ParseException extends IOException implements FMParserConstants {
case END_FUNCTION:
endNames.add("#function");
break;
- case END_TRANSFORM:
- endNames.add("#transform");
- break;
case END_ESCAPE:
endNames.add("#escape");
break;
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/main/javacc/FTL.jj
----------------------------------------------------------------------
diff --git a/src/main/javacc/FTL.jj b/src/main/javacc/FTL.jj
index 1b419fe..cce8d18 100644
--- a/src/main/javacc/FTL.jj
+++ b/src/main/javacc/FTL.jj
@@ -788,8 +788,6 @@ TOKEN:
|
<MACRO : <START_TAG> "macro" <BLANK>> { handleTagSyntaxAndSwitch(matchedToken, FM_EXPRESSION); }
|
- <TRANSFORM : <START_TAG> "transform" <BLANK>> { handleTagSyntaxAndSwitch(matchedToken, FM_EXPRESSION); }
- |
<VISIT : <START_TAG> "visit" <BLANK>> { handleTagSyntaxAndSwitch(matchedToken, FM_EXPRESSION); }
|
<STOP : <START_TAG> "stop" <BLANK>> { handleTagSyntaxAndSwitch(matchedToken, FM_EXPRESSION); }
@@ -860,8 +858,6 @@ TOKEN:
|
<END_COMPRESS : <END_TAG> "compress" <CLOSE_TAG1>> { handleTagSyntaxAndSwitch(matchedToken, DEFAULT); }
|
- <END_TRANSFORM : <END_TAG> "transform" <CLOSE_TAG1>> { handleTagSyntaxAndSwitch(matchedToken, DEFAULT); }
- |
<END_SWITCH : <END_TAG> "switch" <CLOSE_TAG1>> { handleTagSyntaxAndSwitch(matchedToken, DEFAULT); }
|
<ELSE : <START_TAG> "else" <CLOSE_TAG2>> { handleTagSyntaxAndSwitch(matchedToken, DEFAULT); }
@@ -3346,42 +3342,6 @@ ASTStaticText NoParse() :
}
}
-ASTDirTransform Transform() :
-{
- Token start, end, argName;
- ASTExpression exp, argExp;
- TemplateElements children = null;
- HashMap args = null;
-}
-{
- start = <TRANSFORM>
- exp = ASTExpression()
- [<SEMICOLON>]
- (
- argName = <ID>
- <EQUALS>
- argExp = ASTExpression()
- {
- if (args == null) args = new HashMap();
- args.put(argName.image, argExp);
- }
- )*
- (
- end = <EMPTY_DIRECTIVE_END>
- |
- (
- <DIRECTIVE_END>
- children = MixedContentElements()
- end = <END_TRANSFORM>
- )
- )
- {
- ASTDirTransform result = new ASTDirTransform(exp, args, children);
- result.setLocation(template, start, end);
- return result;
- }
-}
-
ASTDirSwitch Switch() :
{
ASTDirSwitch switchBlock;
@@ -3716,8 +3676,6 @@ ASTElement FreemarkerDirective() :
|
tp = NoParse()
|
- tp = Transform()
- |
tp = Switch()
|
tp = Setting()
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/manual/en_US/FM3-CHANGE-LOG.txt
----------------------------------------------------------------------
diff --git a/src/manual/en_US/FM3-CHANGE-LOG.txt b/src/manual/en_US/FM3-CHANGE-LOG.txt
index b69cb04..e2814ab 100644
--- a/src/manual/en_US/FM3-CHANGE-LOG.txt
+++ b/src/manual/en_US/FM3-CHANGE-LOG.txt
@@ -140,5 +140,6 @@ the FreeMarer 3 changelog here:
required when calling JSP custom tags/functions, and in FreeMarker 2 this was worked around with using the
global static default DefaultObjectWrapper when the ObjectWrapper wasn't an ObjectWrapperAndUnwrapper.
- Removed some long deprecated template language directives:
- - <#call ...>
- - <#comment>...</#comment>
\ No newline at end of file
+ - <#call ...> (deprecated by <@... />)
+ - <#comment>...</#comment> (deprecated by <#-- ... -->)
+ - <#transform ...>...</#transform> (deprecated by <@....@...>)
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/interpret.ftl
----------------------------------------------------------------------
diff --git a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/interpret.ftl b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/interpret.ftl
index c41b492..393058e 100644
--- a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/interpret.ftl
+++ b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/interpret.ftl
@@ -18,8 +18,8 @@
-->
<#global x=["a", "b", "c"]>
<#global templateSource = r"<#foreach y in x>${y}</#foreach>">
-<#transform templateSource?interpret>def</#transform>
-<#transform [templateSource]?interpret>def</#transform>
-<#transform [templateSource,"id"]?interpret>def</#transform>
+<@templateSource?interpret>def</@>
+<@[templateSource]?interpret>def</@>
+<@[templateSource,"id"]?interpret>def</@>
<#assign t = '<#macro m>M</#macro>'?interpret><@t /><@m/>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/newlines2.ftl
----------------------------------------------------------------------
diff --git a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/newlines2.ftl b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/newlines2.ftl
index e86684c..ac8337c 100644
--- a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/newlines2.ftl
+++ b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/newlines2.ftl
@@ -18,7 +18,7 @@
-->
<#assign message="Hello, world!\n">
<#assign normalizeNewlines = "org.apache.freemarker.core.util.NormalizeNewlines"?new()>
-<#transform normalizeNewlines>
+<@normalizeNewlines>
<html>
<head>
<title>FreeMarker: Newlines the Second Test</title>
@@ -30,4 +30,4 @@
</body>
</html>
-</#transform>
\ No newline at end of file
+</...@normalizeNewlines>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-freemarker/blob/9047d13b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins1.ftl
----------------------------------------------------------------------
diff --git a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins1.ftl b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins1.ftl
index 29c585d..02237b0 100644
--- a/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins1.ftl
+++ b/src/test/resources/org/apache/freemarker/test/templatesuite/templates/string-builtins1.ftl
@@ -61,7 +61,7 @@ word_list:
</#foreach>
<#global canufeelitbabe = x?interpret>
-interpret: <#transform canufeelitbabe></#transform>
+interpret: <@canufeelitbabe></@>
<#setting locale="es_ES">number: ${"-123.45"?number + 1.1}
${"1.5e3"?number?c}
${"0005"?number?c}