private Func <TextRange, TextRange?> CreateFilterForOtherEntries( CompiledTextSearchData compiledTextSearchData) { if (compiledTextSearchData.ParsedSearchString.EntriesBeforeMainEntry.Count == 0 && compiledTextSearchData.ParsedSearchString.EntriesAfterMainEntry.Count == 0) { return(x => x); } // Search for a match for "entry" withing "textRange" FindEntryFunction findEntry = (textRange, entry) => { var algo = this.GetCompiledTextSearch(compiledTextSearchData.GetSearchContainer(entry)); return(algo.FindFirst(CreateFragmentFromRange(textRange), OperationProgressTracker.None)); }; // Return the extent of the line to look into for non-main entries. GetLineRangeFunction getLineRange = position => this.GetLineTextRangeFromPosition(position, MaxLineExtentOffset); var sourceTextSearch = new TextSourceTextSearch( getLineRange, findEntry, compiledTextSearchData.ParsedSearchString); return(sourceTextSearch.FilterSearchHit); }
public TextSourceTextSearch( GetLineRangeFunction getLineRange, FindEntryFunction findEntry, ParsedSearchString parsedSearchString) { _findEntry = findEntry; _parsedSearchString = parsedSearchString; _getLineExtentCache = new GetLineExtentCache(getLineRange); }
public GetLineExtentCache(GetLineRangeFunction getLineRange) { _getLineRange = getLineRange; }