in src/main/java/org/apache/xmlgraphics/ps/dsc/events/AbstractDSCComment.java [44:105]
private int parseNextParentheseString(String value, int pos, List lst) {
int nestLevel = 1;
pos++;
StringBuffer sb = new StringBuffer();
while (pos < value.length() && nestLevel > 0) {
final char c = value.charAt(pos);
switch (c) {
case '(':
nestLevel++;
if (nestLevel > 1) {
sb.append(c);
}
break;
case ')':
if (nestLevel > 1) {
sb.append(c);
}
nestLevel--;
break;
case '\\':
pos++;
char cnext = value.charAt(pos);
switch (cnext) {
case '\\':
sb.append(cnext);
break;
case 'n':
sb.append('\n');
break;
case 'r':
sb.append('\r');
break;
case 't':
sb.append('\t');
break;
case 'b':
sb.append('\b');
break;
case 'f':
sb.append('\f');
break;
case '(':
sb.append('(');
break;
case ')':
sb.append(')');
break;
default:
int code = Integer.parseInt(value.substring(pos, pos + 3), 8);
sb.append((char)code);
pos += 2;
}
break;
default:
sb.append(c);
}
pos++;
}
lst.add(sb.toString());
pos++;
return pos;
}