Author: jdcasey
Date: Thu Apr 19 19:08:52 2007
New Revision: 530611
URL: http://svn.apache.org/viewvc?view=rev&rev=530611
Log:
Adding escape sequence for pipe and equals sign using backslash character, so
we can embed more advanced macro parameter values, like scripting lines.
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
Modified:
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
URL:
http://svn.apache.org/viewvc/maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java?view=diff&rev=530611&r1=530610&r2=530611
==============================================================================
---
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
(original)
+++
maven/doxia/doxia/trunk/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
Thu Apr 19 19:08:52 2007
@@ -2192,6 +2192,8 @@
String s = text;
s = s.substring( 2, s.length() - 1 );
+
+ s = escapeForMacro( s );
String[] params = StringUtils.split( s, "|" );
@@ -2203,7 +2205,10 @@
{
String[] param = StringUtils.split( params[i], "=" );
- parameters.put( param[0], param[1] );
+ String key = unescapeForMacro( param[0] );
+ String value = unescapeForMacro( param[1] );
+
+ parameters.put( key, value );
}
parameters.put( "sourceContent", sourceContent );
@@ -2225,6 +2230,38 @@
{
throw new AptParseException( "Unable to find macro used in the
APT document", e );
}
+ }
+
+ private String escapeForMacro( String s )
+ {
+ if ( s == null || s.length() < 1 )
+ {
+ return s;
+ }
+
+ String result = s;
+
+ // use some outrageously out-of-place chars for text
+ // (these are device control one/two in unicode)
+ result = StringUtils.replace( result, "\\=", "\u0011" );
+ result = StringUtils.replace( result, "\\|", "\u0012" );
+
+ return result;
+ }
+
+ private String unescapeForMacro( String s )
+ {
+ if ( s == null || s.length() < 1 )
+ {
+ return s;
+ }
+
+ String result = s;
+
+ result = StringUtils.replace( result, "\u0011", "=" );
+ result = StringUtils.replace( result, "\u0012", "|" );
+
+ return result;
}
}