Пример #1
0
        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");
        }
Пример #2
0
        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");
        }
Пример #3
0
        /// <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();
        }