private static Ranges <int> FindMatches(Regex rx, string s, ref Ranges <int> TokenRange) { Ranges <int> ranges = new Ranges <int>(); MatchCollection mc = rx.Matches(s); foreach (Match m in mc) { int sToken = m.Groups[1].Index; int match = m.Groups[2].Index; int eToken = m.Groups[3].Index; int endStr = m.Groups[3].Index + m.Groups[3].Length; TokenRange.add(new Range <int>() { Minimum = sToken, Maximum = match - 1 }); ranges.add(new Range <int>() { Minimum = match, Maximum = eToken - 1 }); TokenRange.add(new Range <int>() { Minimum = eToken, Maximum = endStr - 1 }); } return(ranges); }
private static Ranges <int> FindTabs(Regex rx, string s, ref Ranges <int> TokenRange) { Ranges <int> ranges = new Ranges <int>(); MatchCollection mc = rx.Matches(s); foreach (Match m in mc) { ranges.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index }); TokenRange.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index + m.Length - 1 }); } return(ranges); }
public void FindMatches(string md, ref Ranges <int> Tokens) { if (pattern == Pattern.DblAsterisk || pattern == Pattern.Asterisk || pattern == Pattern.Grave || pattern == Pattern.Underscore || pattern == Pattern.BulletList) { MatchCollection mc = regex.Matches(md); int num = 0; foreach (Match m in mc) { num++; int sToken = m.Groups[1].Index; int match = m.Groups[2].Index; int eToken = m.Groups[3].Index; int endStr = m.Groups[3].Index + m.Groups[3].Length; //int bToken = m.Groups[4].Index; //int endStr1 = m.Groups[4].Index + m.Groups[4].Length; Tokens.add(new Range <int>() { Minimum = sToken, Maximum = match - 1 }); matches.add(new Range <int>() { Minimum = match, Maximum = eToken - 1 }); Tokens.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index }); Tokens.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index + m.Index - 1 }); } } else if (pattern == Pattern.Tab) { MatchCollection mc = regex.Matches(md); foreach (Match m in mc) { matches.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index }); Tokens.add(new Range <int>() { Minimum = m.Index, Maximum = m.Index + m.Length - 1 }); } } else if (pattern == Pattern.Hyperlink_Text || pattern == Pattern.Hyperlink) { } else { throw new System.InvalidOperationException("FindMatches not implemented for this pattern"); } }