Esempio n. 1
0
        private Task SearchInit(string toFind)
        {
            _cancellationSource = new CancellationTokenSource();

            _textSearcher = new KmpTextSearcher(Encoding.GetBytes(toFind));
            return(Task.Run(() => SearchInDirectory(_textSearcher, SearchDirectory), _cancellationSource.Token));
        }
Esempio n. 2
0
        // TODO: Make async enumerable with c# 8 and netcoreapp31
        private async Task SearchInDirectory(ITextSearcher textSearcher, string directory)
        {
            foreach (var file in Directory.EnumerateFiles(SearchDirectory))
            {
                if (_cancellationSource?.IsCancellationRequested ?? true)
                {
                    return;
                }

                if (new FileInfo(file).Length > FileSizeLimitInBytes)
                {
                    continue;
                }

                // SearchAsync string in file
                var foundOffset = await textSearcher.SearchAsync(new BinaryReader(File.OpenRead(file)));

                if (foundOffset >= 0)
                {
                    OnFoundMatch(new SequenceSearchResult(file, foundOffset));
                }
            }

            if (!IsSearchSubDirectories)
            {
                return;
            }

            foreach (var dir in Directory.EnumerateDirectories(directory))
            {
                await SearchInDirectory(textSearcher, dir);
            }
        }
Esempio n. 3
0
 internal TextSearcherViewModel(ITextSearcher textSearcher)
 {
     mTextSearcher = textSearcher;
     mTextSearcherAsCaptionProvider     = textSearcher as ICaptionProvider;
     mTextSearcherAsDescriptionProvider = textSearcher as IDescriptionProvider;
     mTextSearcherAsIconProvider        = textSearcher as IIconProvider;
 }
        /// <summary>
        /// Handles change of the SelectedTextSearcher property.
        /// </summary>
        /// <param name="SelectedTextSearcher">New SelectedTextSearcher.</param>
        protected virtual void OnSelectedTextSearcherChanged(ITextSearcher previousTextSearcher, ITextSearcher currentTextSearcher)
        {
            IOptionsProvider optionsProvider = previousTextSearcher as IOptionsProvider;

            if (optionsProvider != null)
            {
                optionsProvider.OptionChanged -= OnTextSearcherOptionChanged;
            }

            optionsProvider = currentTextSearcher as IOptionsProvider;
            if (optionsProvider != null)
            {
                optionsProvider.OptionChanged += OnTextSearcherOptionChanged;
            }

            Find(SearchTerm, ImmediateSearch);
        }
 //get a class that has the requaired interface
 public FileTextSearcher(ITextSearcher textSearcher)
 {
     this.textSearcher = textSearcher;
 }