public virtual void SpecialChar(RegexPatternMaker maker, char c) { }
// Static members public void EscapeAndAppend(RegexPatternMaker maker, char c) { maker._stringBuilder.Append(Regex.Escape(c.ToString())); }
public virtual void Space(RegexPatternMaker maker, char c) { }
public override void SpecialChar(RegexPatternMaker maker, char c) { maker._stringBuilder.Append(@"\s*"); EscapeAndAppend(maker, c); }
public virtual void Abc(RegexPatternMaker maker, char c) { }
public override void Space(RegexPatternMaker maker, char c) { }
public override void Abc(RegexPatternMaker maker, char c) { maker._stringBuilder.Append(@"\s*"); EscapeAndAppend(maker, c); maker._state = maker._abcState; }
public override void Space(RegexPatternMaker maker, char c) { maker._state = maker._spaceState; }
public override void Abc(RegexPatternMaker maker, char c) { EscapeAndAppend(maker, c); }
public static string GetRegexPattern(string text) { if (null == text) throw new ArgumentNullException(); if (string.IsNullOrEmpty(text)) throw new ArgumentException(); var maker = new RegexPatternMaker(text); var queue = new Queue<char>(text); while (0 < queue.Count()) { var c = queue.Dequeue(); if (char.IsWhiteSpace(c)) { if (null == maker._state) { maker._state = maker._spaceState; } maker._state.Space(maker, c); } else if (IsSpecialChar(c)) { if (null == maker._state) { maker._state = maker._specialCharState; } maker._state.SpecialChar(maker, c); } else { if (null == maker._state) { maker._state = maker._abcState; } maker._state.Abc(maker, c); } } return maker._stringBuilder.ToString(); }