public virtual SyntaxHighlightSegmentList FindAllSegments(string text) { SyntaxHighlightSegmentList res = new SyntaxHighlightSegmentList(); foreach (string def in Definition) { Regex regex = new Regex(def, Options); MatchCollection matches = regex.Matches(text); foreach (Match match in matches) { res.Add(new SyntaxHighlightSegment(match.Index, match.Index + match.Length)); } } res.RemoveOverlappingSegments(); return(res); }
/// <summary> /// Remove segments from this list that are overlapped by those in masterList /// </summary> /// <param name="masterList"></param> public virtual void RemoveOverlappingSegments(SyntaxHighlightSegmentList masterList) { SyntaxHighlightSegmentList res = new SyntaxHighlightSegmentList(); foreach (SyntaxHighlightSegment thisSegment in this) { bool doAdd = true; foreach (SyntaxHighlightSegment masterSegment in masterList) { if (masterSegment.SuperiorTo(thisSegment)) { doAdd = false; break; } } if (doAdd) { res.Add(thisSegment); } } this.Clear(); this.AddRange(res); }