r9680 - helma-ng/trunk/src/org/helma/template

[email protected] Tue, 28 Apr 2009 11:01:02 +0200 (CEST)
Newsgroups gmane.comp.java.helma.cvs
Message-ID <20090428090102.4C8113D0D6@mia>
Author: hannes
Date: 2009-04-28 11:01:02 +0200 (Tue, 28 Apr 2009)
New Revision: 9680

Modified:
   helma-ng/trunk/src/org/helma/template/SkinParser.java
Log:
Add feature to escape macro tags in org.helma.template.SkinParser.

Details at http://dev.helma.org/trac/helma/changeset/9680

Modified: helma-ng/trunk/src/org/helma/template/SkinParser.java
===================================================================
--- helma-ng/trunk/src/org/helma/template/SkinParser.java	2009-04-27 14:46:17 UTC (rev 9679)
+++ helma-ng/trunk/src/org/helma/template/SkinParser.java	2009-04-28 09:01:02 UTC (rev 9680)
@@ -45,11 +45,18 @@
                 reader = new LineNumberReader(r);
             }
             int c;
+            boolean escape = false;
             while ((c = reader.read()) > 0) {
                 switch (c) {
+                    case '\\':
+                        if (escape) {
+                            buffer.append('\\');
+                        }
+                        escape = true;
+                        break;
                     case '<':
                         reader.mark(1);
-                        if (reader.read() == '%') {
+                        if (reader.read() == '%' && !escape) {
                             if (buffer.length() > 0) {
                                 renderText(buffer.toString());
                                 buffer.setLength(0);
@@ -58,9 +65,14 @@
                         } else {
                             buffer.append((char) c);
                             reader.reset();
+                            escape = false;
                         }
                         break;
                     default:
+                        if (escape) {
+                            buffer.append('\\');
+                            escape = false;
+                        }
                         buffer.append((char) c);
                         break;
                 }