public void TextParser_ParseIncremental_CorrectlyHandlesAddedText() { var textParser = new TextParser(); var textParserResult = new TextParserTokenStream(); textParser.Parse(@"lorem ipsum |b|dolor|b| sit amet", textParserResult); TheResultingCollection(textParserResult.Select(x => x.Text)).ShouldBeExactly("lorem", " ", "ipsum", " ", null, "dolor", null, " ", "sit", " ", "amet"); textParser.ParseIncremental(@"lorem ipsum hello world!! |b|dolor|b| sit amet", 12, 14, textParserResult); TheResultingCollection(textParserResult.Select(x => x.Text)).ShouldBeExactly("lorem", " ", "ipsum", " ", "hello", " ", "world!!", " ", null, "dolor", null, " ", "sit", " ", "amet"); }
public void TextParser_ParseIncremental_CorrectlyHandlesReplacedText() { var textParser = new TextParser(); var textParserResult = new TextParserTokenStream(); textParser.Parse(@"lorem ipsum |b|dolor|b| sit amet", textParserResult); TheResultingCollection(textParserResult.Select(x => x.Text)).ShouldBeExactly("lorem", " ", "ipsum", " ", null, "dolor", null, " ", "sit", " ", "amet"); textParser.ParseIncremental(@"lorem ipsum |b|foo bar baz qux|b| sit amet", 15, 21, textParserResult); TheResultingCollection(textParserResult.Select(x => x.Text)).ShouldBeExactly("lorem", " ", "ipsum", " ", null, "foo", " ", "bar", " ", "baz", " ", "qux", null, " ", "sit", " ", "amet"); }
/// <summary> /// Updates the cache which contains the element's parsed text. /// </summary> private void UpdateTextParserCache() { if (textParserResult != null) { textParserResult.Clear(); } if (View == null) { return; } var content = Content; var contentElement = content as UIElement; if (contentElement == null) { if (textParserResult == null) { textParserResult = new TextParserTokenStream(); } var contentAsString = default(String); var contentFormat = ContentStringFormat; if (contentFormat == null) { contentAsString = (content == null) ? String.Empty : content.ToString(); } else { contentAsString = String.Format(contentFormat, content); } View.Resources.TextRenderer.Parse(contentAsString, textParserResult); } InvalidateArrange(); }