|
|
@@ -438,25 +438,36 @@ public class ProjectHelper { |
|
|
|
* <code>${</code> without a closing |
|
|
|
* <code>}</code> |
|
|
|
*/ |
|
|
|
public static void parsePropertyString(String value, Vector fragments, Vector propertyRefs) |
|
|
|
public static void parsePropertyString(String value, Vector fragments, Vector propertyRefs) |
|
|
|
throws BuildException { |
|
|
|
int prev = 0; |
|
|
|
int pos; |
|
|
|
//search for the next instance of $ from the 'prev' position |
|
|
|
while ((pos = value.indexOf("$", prev)) >= 0) { |
|
|
|
|
|
|
|
//if there was any text before this, add it as a fragment |
|
|
|
//TODO, this check could me modified to go if pos>prev; |
|
|
|
//seems like this current version could stick empty strings |
|
|
|
//into the list |
|
|
|
if (pos > 0) { |
|
|
|
fragments.addElement(value.substring(prev, pos)); |
|
|
|
} |
|
|
|
|
|
|
|
if (pos == (value.length() - 1)) { |
|
|
|
//if we are at the end of the string, we tack on a $ |
|
|
|
//then move past it |
|
|
|
if( pos == (value.length() - 1)) { |
|
|
|
fragments.addElement("$"); |
|
|
|
prev = pos + 1; |
|
|
|
} else if (value.charAt(pos + 1) != '{' ) { |
|
|
|
} |
|
|
|
//peek ahead to see if the next char is a property or not |
|
|
|
else if (value.charAt(pos + 1) != '{' ) { |
|
|
|
//not a property: insert the char as a literal |
|
|
|
fragments.addElement(value.substring(pos + 1, pos + 2)); |
|
|
|
prev = pos + 2; |
|
|
|
} else { |
|
|
|
//property found, extract its name or bail on a typo |
|
|
|
int endName = value.indexOf('}', pos); |
|
|
|
if (endName < 0) { |
|
|
|
throw new BuildException("Syntax error in property: " |
|
|
|
throw new BuildException("Syntax error in property: " |
|
|
|
+ value ); |
|
|
|
} |
|
|
|
String propertyName = value.substring(pos + 2, endName); |
|
|
@@ -465,9 +476,11 @@ public class ProjectHelper { |
|
|
|
prev = endName + 1; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//no more $ signs found |
|
|
|
//if there is any tail to the file, append it |
|
|
|
if (prev < value.length()) { |
|
|
|
fragments.addElement(value.substring(prev)); |
|
|
|
} |
|
|
|
} |
|
|
|
//end class |
|
|
|
} |