private int parseNextParentheseString()

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;
    }