- endOfNamePosition=anExpression.indexOf('}', position);
- if (endOfNamePosition>=0) {
- result.append(findStringForKey(aMap, anExpression.substring(position+2, endOfNamePosition)));
- previousPosition=endOfNamePosition+1;
+ endOfExpressionPosition=position+2;
+ while (endOfExpressionPosition<anExpression.length() && anExpression.charAt(endOfExpressionPosition) != '}') {
+ if (anExpression.charAt(endOfExpressionPosition)=='\'' || anExpression.charAt(endOfExpressionPosition)=='"') {
+ char boundary = anExpression.charAt(endOfExpressionPosition);
+
+ endOfExpressionPosition++;
+ while (endOfExpressionPosition<anExpression.length() && anExpression.charAt(endOfExpressionPosition) != boundary) {
+ if (anExpression.charAt(endOfExpressionPosition) == STRING_ESCAPE_CHARACTER)
+ endOfExpressionPosition++;
+ endOfExpressionPosition++;
+ }
+ if (endOfExpressionPosition<anExpression.length()) {
+ throw new ParameterExpanderExc("Unterminated string in {1}",new Object[]{anExpression});
+ }
+ }
+ endOfExpressionPosition++;
+ }
+ if (endOfExpressionPosition<anExpression.length()) {
+ result.append(evaluateStringExpression(aMap, anExpression.substring(position+2, endOfExpressionPosition)));
+// findStringForKey(aMap, anExpression.substring(position+2, endOfExpressionPosition))
+// );
+ previousPosition=endOfExpressionPosition+1;