public void appendChar(final char ch) { text.append(ch); if (quoted || !Formeta.isWhitespace(ch)) { lengthWithoutTrailingWs = text.length(); } }
public TextParserState processChar(final char ch, final TextParserContext ctx) { final TextParserState newState; switch(ch) { case Formeta.GROUP_START: case Formeta.GROUP_END: case Formeta.ITEM_SEPARATOR: case Formeta.NAME_VALUE_SEPARATOR: newState = DELIMITER_REACHED; break; default: if (Formeta.isWhitespace(ch)) { newState = TRAILING_WHITESPACE; } else { final String sep = "', '"; final String expected = "whitespace or one of '" + Formeta.GROUP_START + sep + Formeta.GROUP_END + sep + Formeta.ITEM_SEPARATOR + sep + Formeta.NAME_VALUE_SEPARATOR + "'"; throw new FormatException(getUnexpectedCharMsg(expected, ch)); } } return newState; } },
public TextParserState processChar(final char ch, final TextParserContext ctx) { final TextParserState newState; switch(ch) { case Formeta.ESCAPE_CHAR: ctx.setQuoted(false); newState = ESCAPE_SEQ; break; case Formeta.QUOT_CHAR: ctx.setQuoted(true); newState = QUOTED_TEXT; break; case Formeta.GROUP_START: case Formeta.GROUP_END: case Formeta.ITEM_SEPARATOR: case Formeta.NAME_VALUE_SEPARATOR: ctx.setQuoted(false); newState = DELIMITER_REACHED; break; default: if (Formeta.isWhitespace(ch)) { newState = LEADING_WHITESPACE; } else { ctx.setQuoted(false); ctx.appendChar(ch); newState = TEXT; } } return newState; } },