Exemplo n.º 1
0
        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 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();
        }
Exemplo n.º 8
0
        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 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,
//			);
        }
Exemplo n.º 12
0
 public ITextIterator BuildTextIterator(ProvidedDocumentInformation info)
 {
     Debug.Assert(info != null);
     return(new ForwardTextIterator(info));
 }
Exemplo n.º 13
0
		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;
		}
Exemplo n.º 14
0
		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);
		}