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");
+    }
+
+}