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