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 eb1a0ad23b69b49841e9016011deffafde4f40d1
Author: ddekany <[email protected]>
AuthorDate: Sat Dec 16 21:58:19 2023 +0100

    For PR #88 forceAutoEscape: Postpone failing due to non-escaping output 
format until we are past the #ftl header
---
 src/main/javacc/FTL.jj                              | 8 +++++---
 src/test/java/freemarker/core/OutputFormatTest.java | 5 ++---
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/main/javacc/FTL.jj b/src/main/javacc/FTL.jj
index 55955c5c..bad64ca7 100644
--- a/src/main/javacc/FTL.jj
+++ b/src/main/javacc/FTL.jj
@@ -237,9 +237,6 @@ public class FMParser {
                 outputFormat = outputFormatFromExt;
             }
         }
-        if (!(outputFormat instanceof MarkupOutputFormat) && 
autoEscapingPolicy == Configuration.FORCE_AUTO_ESCAPING_POLICY) {
-            throw new 
IllegalArgumentException(forcedAutoEscapingPolicyExceptionMessage(outputFormat));
-        }
         recalculateAutoEscapingField();
 
         token_source.setParser(this);
@@ -4754,6 +4751,11 @@ TemplateElement Root() :
         LOOKAHEAD([<STATIC_TEXT_WS>](<TRIVIAL_FTL_HEADER>|<FTL_HEADER>))
         HeaderElement()
     ]
+    {
+        if (!(outputFormat instanceof MarkupOutputFormat) && 
autoEscapingPolicy == Configuration.FORCE_AUTO_ESCAPING_POLICY) {
+            throw new 
IllegalArgumentException(forcedAutoEscapingPolicyExceptionMessage(outputFormat));
+        }
+    }
     children = MixedContentElements()
     <EOF>
     {
diff --git a/src/test/java/freemarker/core/OutputFormatTest.java 
b/src/test/java/freemarker/core/OutputFormatTest.java
index 03672c76..a9de869c 100644
--- a/src/test/java/freemarker/core/OutputFormatTest.java
+++ b/src/test/java/freemarker/core/OutputFormatTest.java
@@ -868,9 +868,8 @@ public class OutputFormatTest extends TemplateTest {
         cfg.setOutputFormat(DummyOutputFormat.INSTANCE);
         assertOutput(commonFTL, esced);
 
-        // TODO Should work:
-        // cfg.setOutputFormat(PlainTextOutputFormat.INSTANCE);
-        // assertOutput("<#ftl outputFormat='seldomEscaped'>" + commonFTL, 
esced);
+        cfg.setOutputFormat(PlainTextOutputFormat.INSTANCE);
+        assertOutput("<#ftl outputFormat='seldomEscaped'>" + commonFTL, esced);
 
         cfg.setOutputFormat(HTMLOutputFormat.INSTANCE);
         assertOutput("<#outputFormat 'seldomEscaped'>" + commonFTL + 
"</#outputFormat>", esced);

Reply via email to