Exemplo n.º 1
0
        private List <SearchResult> GetSearchResults(SearchQuery query, int offset, int length)
        {
            if (length == 0 || AvalonEditDocument.TextLength == 0)
            {
                return(null);
            }

            // Use regular expression.
            var regex = query.AsRegex();

            if (regex == null)
            {
                return(null);
            }

            // Match regular expression.
            var matches = regex.Matches(AvalonEditDocument.Text);

            // Return the search results within the specified text segment.
            var searchResults = new List <SearchResult>(matches.Count);
            int endOffset     = offset + length;

            foreach (Match match in matches)
            {
                if (offset <= match.Index && match.Index + match.Length <= endOffset)
                {
                    searchResults.Add(new SearchResult(this, match));
                }
            }

            return(searchResults);
        }