Beispiel #1
0
        public void Search(
            string searchExpression,
            Action <ObservableCollection <ISearchablePromptItem> > searchResultCallback,
            Action <string> errorCallback)
        {
            var search = _searchStringParser.Parse(searchExpression);

            search.Execute(searchResultCallback, errorCallback);
        }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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));
            }
        }
Beispiel #4
0
        public ObservableCollection <ISearchablePromptItem> Search(string searchExpression)
        {
            var searchTask = _searchStringParser.Parse(searchExpression);

            return(searchTask.Execute(_searchablePromptItemCollection));
        }