public void copyQuotedContent()

in core/src/main/java/org/apache/james/mime4j/stream/RawFieldParser.java [385:433]


    public void copyQuotedContent(final ByteSequence buf, final ParserCursor cursor,
            final StringBuilder dst) {
        if (cursor.atEnd()) {
            return;
        }
        int pos = cursor.getPos();
        int indexFrom = cursor.getPos();
        int indexTo = cursor.getUpperBound();
        char current = (char) (buf.byteAt(pos) & 0xff);
        if (current != '\"') {
            return;
        }
        pos++;
        indexFrom++;

        ByteArrayBuffer dstRaw = new ByteArrayBuffer(indexTo - indexFrom);

        boolean escaped = false;
        for (int i = indexFrom; i < indexTo; i++, pos++) {
            byte currentByte = buf.byteAt(i);
            current = (char) (currentByte & 0xff);
            if (escaped) {
                if (current != '\"' && current != '\\') {
                    dstRaw.append('\\');
                }
                dstRaw.append(currentByte);
                escaped = false;
            } else {
                if (current == '\"') {
                    pos++;
                    break;
                }
                if (current == '\\') {
                    escaped = true;
                } else if (current != '\r' && current != '\n') {
                    dstRaw.append(currentByte);
                }
            }
        }

        String decoded = CharsetUtil.isASCII(dstRaw) ? ContentUtil.decode(dstRaw) : ContentUtil.decode(StandardCharsets.UTF_8, dstRaw);
        if (decoded.startsWith("=?")) {
            decoded = DecoderUtil.decodeEncodedWords(decoded, DecodeMonitor.SILENT);
        }

        dst.append(decoded);

        cursor.updatePos(pos);
    }