You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@velocity.apache.org by cb...@apache.org on 2019/09/02 19:35:32 UTC
svn commit: r1866291 - in /velocity/engine/trunk/velocity-engine-core/src:
main/parser/Parser.jjt
test/java/org/apache/velocity/test/issues/Velocity919TestCase.java
Author: cbrisson
Date: Mon Sep 2 19:35:32 2019
New Revision: 1866291
URL: http://svn.apache.org/viewvc?rev=1866291&view=rev
Log:
[VELOCITY-919] Fix zero-width whitespace handling
Added:
velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity919TestCase.java
Modified:
velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
Modified: velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt?rev=1866291&r1=1866290&r2=1866291&view=diff
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt (original)
+++ velocity/engine/trunk/velocity-engine-core/src/main/parser/Parser.jjt Mon Sep 2 19:35:32 2019
@@ -755,11 +755,11 @@ TOKEN :
}
}
-/* In all other states, drop the zero-width whitespace */
+/* In all other states, keep the zero-width whitespace for now */
<REFERENCE,REFMODIFIER,OLD_REFMODIFIER,REFMOD3,REFINDEX,DIRECTIVE,REFMOD2,DEFAULT,REFMOD,IN_TEXTBLOCK,IN_MULTILINE_COMMENT,IN_FORMAL_COMMENT,IN_SINGLE_LINE_COMMENT>
-SKIP :
+TOKEN :
{
- <BEFORE_EOF: "\u200B">
+ <ZERO_WIDTH_WHITESPACE: "\u200B">
}
<REFERENCE, REFMODIFIER, OLD_REFMODIFIER, REFMOD3>
@@ -1573,6 +1573,13 @@ boolean Statement(boolean afterNewline)
| (((<INLINE_TEXT>) { afterNewline = false; } ) ((<TEXT>) { afterNewline = true; })? ) #Text { return afterNewline; }
| (<WHITESPACE>) #Text { return false; }
| (<SUFFIX>) #Text { return true; }
+| LOOKAHEAD(2) EndingZeroWidthWhitespace() { return afterNewline; }
+| (<ZERO_WIDTH_WHITESPACE>) #Text { afterNewline = !afterNewline; return false; }
+}
+
+void EndingZeroWidthWhitespace() #void : {}
+{
+ <ZERO_WIDTH_WHITESPACE> <EOF> { }
}
/**
Added: velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity919TestCase.java
URL: http://svn.apache.org/viewvc/velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity919TestCase.java?rev=1866291&view=auto
==============================================================================
--- velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity919TestCase.java (added)
+++ velocity/engine/trunk/velocity-engine-core/src/test/java/org/apache/velocity/test/issues/Velocity919TestCase.java Mon Sep 2 19:35:32 2019
@@ -0,0 +1,31 @@
+package org.apache.velocity.test.issues;
+
+import org.apache.velocity.VelocityContext;
+import org.apache.velocity.app.VelocityEngine;
+import org.apache.velocity.test.BaseTestCase;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.StringWriter;
+import java.nio.file.Path;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.velocity.test.TemplateTestBase.FILE_RESOURCE_LOADER_PATH;
+
+public class Velocity919TestCase extends BaseTestCase
+{
+ public Velocity919TestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testUnbreakableSpace() throws Exception
+ {
+ assertEvalEquals("before\u200Bafter", "before\u200Bafter");
+ }
+
+}