Esempio n. 1
0
        private IEnumerable <SearchResult> SearchContentInFile(FileInfo file, IContentSelector contentSelector)
        {
            int lineNumber = 1;

            foreach (string line in File.ReadLines(file.FullName))
            {
                if (_cancellationTokenSource.IsCancellationRequested)
                {
                    yield break;
                }

                List <MatchPosition> matches = contentSelector.GetMatches(line).ToList();

                if (matches.Count > 0)
                {
                    yield return(new SearchResult(file, lineNumber, line, file.LastWriteTime.Ticks, matches));
                }

                ++lineNumber;
            }
        }
Esempio n. 2
0
        private List <LineInfo> GetMatchesInContent(CachedFileContent fileContent, IContentSelector contentSelector, int lineMin, int lineMax)
        {
            List <LineInfo> lineInfos = new List <LineInfo>();
            var             index     = 1;

            foreach (string line in fileContent.Content)
            {
                if (index >= lineMin && index <= lineMax)
                {
                    LineInfo lineInfo = fileContent.GetCachedLinfoForLine(index - 1);
                    if (lineInfo == null)
                    {
                        lineInfo = new LineInfo(line, index, contentSelector.GetMatches(line).OrderBy(l => l.Begin).ToList());
                        fileContent.SetCachedLinfoForLine(index - 1, lineInfo);
                    }

                    lineInfos.Add(lineInfo);
                }
                ++index;
            }

            return(lineInfos);
        }