private void DelimiterCharEvent(char c) { switch (state) { case DelimitedFieldParserState.InDelimiter: if (!SqueezeDelimiters) { AddField(); } break; case DelimitedFieldParserState.InTextData: AddField(); NewField(); state = DelimitedFieldParserState.InDelimiter; break; case DelimitedFieldParserState.InQuotedText: AppendChar(c); break; case DelimitedFieldParserState.InClosingQuotes: AddField(); NewField(); state = DelimitedFieldParserState.InDelimiter; break; default: throw new InvalidOperationException(); } }
private void QuoteCharEvent(char c) { if (!HasFieldsEnclosedInQuotes) { DefaultCharEvent(c); return; } switch (state) { case DelimitedFieldParserState.InDelimiter: state = DelimitedFieldParserState.InQuotedText; break; case DelimitedFieldParserState.InTextData: throw new MalformedLineException("Unexpected quote.", LineNumber); case DelimitedFieldParserState.InQuotedText: state = DelimitedFieldParserState.InClosingQuotes; break; case DelimitedFieldParserState.InClosingQuotes: AddField(); NewField(); state = DelimitedFieldParserState.InQuotedText; break; default: throw new InvalidOperationException(); } }
private void DefaultCharEvent(char c) { switch (state) { case DelimitedFieldParserState.InDelimiter: AppendChar(c); state = DelimitedFieldParserState.InTextData; break; case DelimitedFieldParserState.InTextData: AppendChar(c); break; case DelimitedFieldParserState.InQuotedText: AppendChar(c); break; case DelimitedFieldParserState.InClosingQuotes: throw new MalformedLineException("Expected delimiter not found.", LineNumber); default: throw new InvalidOperationException(); } }
private void Initialize() { NewField(); fields.Clear(); state = DelimitedFieldParserState.InDelimiter; }