public void SetUp() { // Set up SearchOptions required by the BruteForceSearchStrategy. SearchOptions.CurrentFindPattern = "foo"; SearchOptions.MatchCase = false; SearchOptions.MatchWholeWord = false; // Create search. search = new Search(); search.TextIteratorBuilder = new ForwardTextIteratorBuilder(); search.SearchStrategy = new BruteForceSearchStrategy(); MockCurrentDocumentIterator currentDocIterator = new MockCurrentDocumentIterator(); search.DocumentIterator = currentDocIterator; // Create the document to be searched. MockDocument doc = new MockDocument(); StringTextBufferStrategy textBufferStrategy = new StringTextBufferStrategy(); textBufferStrategy.SetContent("foo"); doc.TextBufferStrategy = textBufferStrategy; // Create a doc info with an initial end offset right // at the end of the text. ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc, @"C:\Temp\test.txt", doc.TextLength); currentDocIterator.Current = docInfo; currentDocIterator.CurrentFileName = docInfo.FileName; // Search the document. search.SearchStrategy.CompilePattern(null); result = search.FindNext(null); }
static void AddDeclarationAsReference(List <Reference> list, string fileName, DomRegion region, string name) { if (fileName == null) { return; } ProvidedDocumentInformation documentInformation = FindReferencesAndRenameHelper.GetDocumentInformation(fileName); int offset = documentInformation.Document.PositionToOffset(region.BeginLine, region.BeginColumn); string text = documentInformation.Document.GetText(offset, Math.Min(name.Length + 30, documentInformation.Document.TextLength - offset - 1)); int offsetChange = -1; do { offsetChange = text.IndexOf(name, offsetChange + 1); if (offsetChange < 0 || offsetChange >= text.Length) { return; } } while (offsetChange + name.Length < text.Length && char.IsLetterOrDigit(text[offsetChange + name.Length])); offset += offsetChange; foreach (Reference r in list) { if (r.Offset == offset) { return; } } list.Add(new Reference(fileName, offset, name.Length, name, null)); }
public void SetUp() { // Set up SearchOptions required by the BruteForceSearchStrategy. SearchOptions.CurrentFindPattern = "foo"; SearchOptions.MatchCase = false; SearchOptions.MatchWholeWord = false; // Create search. search = new Search(); search.TextIteratorBuilder = new ForwardTextIteratorBuilder(); search.SearchStrategy = new BruteForceSearchStrategy(); MockCurrentDocumentIterator currentDocIterator = new MockCurrentDocumentIterator(); search.DocumentIterator = currentDocIterator; // Create the document to be searched. MockDocument doc = new MockDocument(); doc.Text = "foo"; // Create a doc info with an initial end offset right // at the end of the text. ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc, @"C:\Temp\test.txt", doc.TextLength); currentDocIterator.Current = docInfo; currentDocIterator.CurrentFileName = docInfo.FileName; // Search the document. search.SearchStrategy.CompilePattern(null); result = search.FindNext(null); }
public void SetUp() { // Create the document to be iterated through. MockDocument doc = new MockDocument(); ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc, @"C:\Temp\test.txt", 0); // Create the forward iterator. forwardTextIterator = new ForwardTextIterator(docInfo); }
public ForwardTextIterator(ProvidedDocumentInformation info) { if (info == null) throw new ArgumentNullException("info"); this.info = info; this.document = info.Document; this.position = info.CurrentOffset; this.endOffset = info.EndOffset; Reset(); }
public ForwardTextIterator(ProvidedDocumentInformation info) { if (info == null) { throw new ArgumentNullException("info"); } this.info = info; this.textBuffer = info.TextBuffer; this.position = info.CurrentOffset; this.endOffset = info.EndOffset; Reset(); }
public SearchResultMatch FindNext() { // insanity check Debug.Assert(searchStrategy != null); Debug.Assert(documentIterator != null); Debug.Assert(textIteratorBuilder != null); if (info != null && textIterator != null && documentIterator.CurrentFileName != null) { ProvidedDocumentInformation currentInfo = documentIterator.Current; if (currentInfo != null) { if (!info.Equals(currentInfo)) // create new iterator, if document changed { info = currentInfo; textIterator = textIteratorBuilder.BuildTextIterator(info); } else // old document -> initialize iterator position to caret pos { textIterator.Position = info.CurrentOffset; } SearchResultMatch result = CreateNamedSearchResult(searchStrategy.FindNext(textIterator)); if (result != null) { info.CurrentOffset = textIterator.Position; return(result); } } } // not found or first start -> move forward to the next document if (documentIterator.MoveForward()) { info = documentIterator.Current; // document is valid for searching -> set iterator & fileName if (info != null && info.TextBuffer != null && info.EndOffset >= 0 && info.EndOffset <= info.TextBuffer.Length) { textIterator = textIteratorBuilder.BuildTextIterator(info); } else { textIterator = null; } return(FindNext()); } return(null); }
public void SetUp() { // Create the document to be iterated through. MockDocument doc = new MockDocument(); doc.Text = "bar"; // Create a doc info with an initial end offset right // at the end of the text. ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc, @"C:\Temp\test.txt", doc.TextLength); // Create the forward iterator. forwardTextIterator = new ForwardTextIterator(docInfo); }
public void SetUp() { // Set up SearchOptions required by the BruteForceSearchStrategy. SearchOptions.CurrentFindPattern = "foo"; SearchOptions.MatchCase = false; SearchOptions.MatchWholeWord = false; // Create the document to be searched. MockDocument doc = new MockDocument(); doc.Text = "foo"; // Create a doc info with an initial end offset right // at the end of the text. ProvidedDocumentInformation docInfo = new ProvidedDocumentInformation(doc, @"C:\Temp\test.txt", doc.TextLength); // Search the document. // result = SearchManager.FindNext(SearchOptions.CurrentFindPattern, !SearchOptions.MatchCase, SearchOptions.MatchWholeWord, SearchMode.Normal, // ); }
public ITextIterator BuildTextIterator(ProvidedDocumentInformation info) { Debug.Assert(info != null); return(new ForwardTextIterator(info)); }
public SearchResultMatch FindNext(IProgressMonitor monitor) { // insanity check Debug.Assert(searchStrategy != null); Debug.Assert(documentIterator != null); Debug.Assert(textIteratorBuilder != null); if (monitor != null && monitor.CancellationToken.IsCancellationRequested) return null; if (info != null && textIterator != null && documentIterator.CurrentFileName != null) { ProvidedDocumentInformation currentInfo = documentIterator.Current; if (currentInfo != null) { if (!info.Equals(currentInfo)) { // create new iterator, if document changed info = currentInfo; textIterator = textIteratorBuilder.BuildTextIterator(info); } else { // old document -> initialize iterator position to caret pos textIterator.Position = info.CurrentOffset; } SearchResultMatch result = CreateNamedSearchResult(searchStrategy.FindNext(textIterator)); if (result != null) { info.CurrentOffset = textIterator.Position; return result; } } } // not found or first start -> move forward to the next document if (documentIterator.MoveForward()) { info = documentIterator.Current; // document is valid for searching -> set iterator & fileName if (info != null && info.EndOffset >= 0 && info.EndOffset <= info.Document.TextLength) { textIterator = textIteratorBuilder.BuildTextIterator(info); } else { textIterator = null; } return FindNext(monitor); } return null; }
public SearchResultMatch FindNext(int offset, int length) { if (info != null && textIterator != null && documentIterator.CurrentFileName != null) { ProvidedDocumentInformation currentInfo = documentIterator.Current; if (currentInfo != null) { if (!info.Equals(currentInfo)) { // create new iterator, if document changed info = currentInfo; textIterator = textIteratorBuilder.BuildTextIterator(info); } else { // old document -> initialize iterator position to caret pos textIterator.Position = info.CurrentOffset; } SearchResultMatch result = CreateNamedSearchResult(searchStrategy.FindNext(textIterator, offset, length)); if (result != null) { info.CurrentOffset = textIterator.Position; return result; } } } // not found or first start -> move forward to the next document if (documentIterator.MoveForward()) { info = documentIterator.Current; // document is valid for searching -> set iterator & fileName if (info != null && info.EndOffset >= 0 && info.EndOffset < info.Document.TextLength) { textIterator = textIteratorBuilder.BuildTextIterator(info); } else { textIterator = null; } return FindNext(offset, length); } return null; }
public ITextIterator BuildTextIterator(ProvidedDocumentInformation info) { Debug.Assert(info != null); return new ForwardTextIterator(info); }