public void Search( string searchExpression, Action <ObservableCollection <ISearchablePromptItem> > searchResultCallback, Action <string> errorCallback) { var search = _searchStringParser.Parse(searchExpression); search.Execute(searchResultCallback, errorCallback); }
public CompiledTextSearchData Create(SearchParams searchParams, Func <FileName, bool> fileNamePathMatcher) { ParsedSearchString parsedSearchString; if (searchParams.Regex) { parsedSearchString = new ParsedSearchString( new ParsedSearchString.Entry { Text = searchParams.SearchString }, Enumerable.Empty <ParsedSearchString.Entry>(), Enumerable.Empty <ParsedSearchString.Entry>()); } else { var str = searchParams.SearchString ?? ""; if (str.Length < MinimumSearchPatternLength) { throw new RecoverableErrorException( string.Format( "Search pattern must contain at least {0} characters", MinimumSearchPatternLength)); } parsedSearchString = _searchStringParser.Parse(searchParams.SearchString ?? ""); } var searchContentsAlgorithms = CreateSearchAlgorithms( parsedSearchString, new SearchProviderOptions { MatchCase = searchParams.MatchCase, MatchWholeWord = searchParams.MatchWholeWord, UseRegex = searchParams.Regex, UseRe2Engine = searchParams.UseRe2Engine }); return(new CompiledTextSearchData( parsedSearchString, searchContentsAlgorithms, fileNamePathMatcher)); }
public SearchFileContentsResult SearchFileContents(SearchParams searchParams) { var parsedSearchString = _searchStringParser.Parse(searchParams.SearchString ?? ""); // Don't search empty or very small strings -- no significant results. if (string.IsNullOrWhiteSpace(parsedSearchString.MainEntry.Text) || (parsedSearchString.MainEntry.Text.Length < MinimumSearchPatternLength)) { return(SearchFileContentsResult.Empty); } using (var searchContentsData = new SearchContentsData(parsedSearchString, CreateSearchAlgorithms(parsedSearchString, searchParams.MatchCase))) { // taskCancellation is used to make sure we cancel previous tasks as // fast as possible to avoid using too many CPU resources if the caller // keeps asking us to search for things. Note that this assumes the // caller is only interested in the result of the *last* query, while // the previous queries will throw an OperationCanceled exception. _taskCancellation.CancelAll(); var cancellationToken = _taskCancellation.GetNewToken(); return(DoSearchFileContents(searchContentsData, searchParams.MaxResults, cancellationToken)); } }
public ObservableCollection <ISearchablePromptItem> Search(string searchExpression) { var searchTask = _searchStringParser.Parse(searchExpression); return(searchTask.Execute(_searchablePromptItemCollection)); }