C# Class CK.Core.StringMatcher

This class supports "Match and Forward" pattern. On a failed match, the SetError method sets the ErrorMessage. On a successful match, the StartIndex is updated by a call to Forward so that the Head is positioned after the match (and any existing error is cleared).
Show file Open project: SimpleGitVersion/SGV-Net Class Usage Examples

Public Properties

Property Type Description
RegexDouble System.Text.RegularExpressions.Regex

Public Methods

Method Description
BackwardSetError ( int savedStartIndex, object expectedMessage = null, [ callerName = null ) : bool

Moves back the head at a previously index and sets an error. The message starts with the caller's method name.

Forward ( int charCount ) : bool

Increments the StartIndex (and decrements Length) with the specified character count and clears any existing error.

MatchChar ( char c ) : bool

Matches an exact single character. If match fails, SetError is called.

MatchWhiteSpaces ( int minCount = 1 ) : bool

Matches a sequence of white spaces.

SetError ( object expectedMessage = null, [ callerName = null ) : bool

Sets an error. The message starts with the caller's method name.

SetSuccess ( ) : bool

Clears any error and returns true.

StringMatcher ( string text, int startIndex ) : System

Initializes a new instance of the StringMatcher class.

StringMatcher ( string text, int startIndex, int length ) : System

Initializes a new instance of the StringMatcher class on a substring.

ToString ( ) : string

Overridden to return a detailed string with ErrorMessage (if any), the Head character, StartIndex position and whole Text.

TryMatchChar ( char c ) : bool

Attempts to match an exact single character.

TryMatchDoubleValue ( ) : bool

Matches a double without getting its value nor setting an error if match fails. This uses RegexDouble.

TryMatchJSONQuotedString ( bool allowNull = false ) : bool

Matches a quoted string without extracting its content.

TryMatchJSONQuotedString ( string &content, bool allowNull = false ) : bool

Matches a quoted string without setting an error if match fails.

TryMatchText ( string s, System.StringComparison comparisonType = StringComparison.OrdinalIgnoreCase ) : bool

Matches a string without setting an error if match fails.

UncheckedMove ( int delta ) : bool

Moves the head without any check and returns always true: typically called by successful TryMatch methods.

Private Methods

Method Description
FormatMessage ( object expectedMessage, string callerName ) : string
ReadHexDigit ( char c ) : int

Method Details

BackwardSetError() public method

Moves back the head at a previously index and sets an error. The message starts with the caller's method name.
public BackwardSetError ( int savedStartIndex, object expectedMessage = null, [ callerName = null ) : bool
savedStartIndex int Index to reset.
expectedMessage object /// Optional object. Its will be used to generate an "expected '...'" message. ///
callerName [ Name of the caller (automatically injected by the compiler).
return bool

Forward() public method

Increments the StartIndex (and decrements Length) with the specified character count and clears any existing error.
public Forward ( int charCount ) : bool
charCount int The successfully matched character count. /// Must be positive and should not move head past the end of the substring.
return bool

MatchChar() public method

Matches an exact single character. If match fails, SetError is called.
public MatchChar ( char c ) : bool
c char The character that must match.
return bool

MatchWhiteSpaces() public method

Matches a sequence of white spaces.
public MatchWhiteSpaces ( int minCount = 1 ) : bool
minCount int Minimal number of white spaces to match.
return bool

SetError() public method

Sets an error. The message starts with the caller's method name.
public SetError ( object expectedMessage = null, [ callerName = null ) : bool
expectedMessage object /// Optional object. Its will be used to generate an "expected '...'" message. ///
callerName [ Name of the caller (automatically injected by the compiler).
return bool

SetSuccess() public method

Clears any error and returns true.
public SetSuccess ( ) : bool
return bool

StringMatcher() public method

Initializes a new instance of the StringMatcher class.
public StringMatcher ( string text, int startIndex ) : System
text string The string to parse.
startIndex int Index where the match must start in .
return System

StringMatcher() public method

Initializes a new instance of the StringMatcher class on a substring.
public StringMatcher ( string text, int startIndex, int length ) : System
text string The string to parse.
startIndex int /// Index where the match must start in . ///
length int /// Number of characters to consider in the string. /// If + length is greater than the length of the string, an is thrown. ///
return System

ToString() public method

Overridden to return a detailed string with ErrorMessage (if any), the Head character, StartIndex position and whole Text.
public ToString ( ) : string
return string

TryMatchChar() public method

Attempts to match an exact single character.
public TryMatchChar ( char c ) : bool
c char The character that must match.
return bool

TryMatchDoubleValue() public method

Matches a double without getting its value nor setting an error if match fails. This uses RegexDouble.
public TryMatchDoubleValue ( ) : bool
return bool

TryMatchJSONQuotedString() public method

Matches a quoted string without extracting its content.
public TryMatchJSONQuotedString ( bool allowNull = false ) : bool
allowNull bool True to allow 'null'.
return bool

TryMatchJSONQuotedString() public method

Matches a quoted string without setting an error if match fails.
public TryMatchJSONQuotedString ( string &content, bool allowNull = false ) : bool
content string Extracted content.
allowNull bool True to allow 'null'.
return bool

TryMatchText() public method

Matches a string without setting an error if match fails.
public TryMatchText ( string s, System.StringComparison comparisonType = StringComparison.OrdinalIgnoreCase ) : bool
s string The string that must match. Can not be null nor empty.
comparisonType System.StringComparison Specifies the culture, case, and sort rules.
return bool

UncheckedMove() public method

Moves the head without any check and returns always true: typically called by successful TryMatch methods.
public UncheckedMove ( int delta ) : bool
delta int Number of characters.
return bool

Property Details

RegexDouble public static property

The Regex that TryMatchDoubleValue() uses to avoid calling double.TryParse(string, out double) when resolving the value is useless.
public static Regex,System.Text.RegularExpressions RegexDouble
return System.Text.RegularExpressions.Regex