public string Parse(string text, GetValueForKeyFunc getValueForKeyFunc) { using (var reader = new StringReader(text)) { var parser = new NamedFieldParser(getValueForKeyFunc); do { parser.Current = reader.Read(); switch (parser.State) { case ParsingState.Text: HandleRegularCharacter(parser); break; case ParsingState.StartOfExpression: HandleStartOfExpression(parser); break; case ParsingState.Expression: HandleFieldExpression(parser); break; case ParsingState.EndOfExpression: HandleEndOfExpression(parser); break; } } while (parser.State != ParsingState.EndOfFile); return(parser.FormattedText.ToString()); } }
public NamedFieldParser(GetValueForKeyFunc func) { _current = NoMoreText; Position = -1; State = ParsingState.Text; GetValueForKeyFunc = func; }