Exemplo n.º 1
0
        public void ReadTextBlock_correctly_reads_see_elements_05()
        {
            var xml      = @"<see href=""http://example.com"" cref=""T:SomeNamespace.SomeClass"" />";
            var expected = new SeeElement(MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 2
0
        public void ReadTextBlock_correctly_reads_see_elements_03()
        {
            var xml      = @"<see href=""http://example.com"" />";
            var expected = new SeeElement(new Uri("http://example.com"));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 3
0
        public void ReadTextBlock_correctly_reads_see_elements_06()
        {
            var xml      = @"<see href=""http://example.com"" cref=""T:SomeNamespace.SomeClass"">Lorem ipsum dolor sit amet.</see>";
            var expected = new SeeElement(
                MemberId.Parse("T:SomeNamespace.SomeClass", Array.Empty <TypeId>()),
                new TextBlock(new[] { new TextElement("Lorem ipsum dolor sit amet.") }));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 4
0
        public void ReadTextBlock_correctly_reads_see_elements_04()
        {
            var xml      = @"<see href=""http://example.com"">Lorem ipsum dolor sit amet.</see>";
            var expected = new SeeElement(
                new Uri("http://example.com"),
                new TextBlock(new[] { new TextElement("Lorem ipsum dolor sit amet.") }));

            ReadTextBlock_correctly_reads_see_elements(xml, expected);
        }
Exemplo n.º 5
0
        private void ReadTextBlock_correctly_reads_see_elements(string xml, SeeElement expected)
        {
            // ARRANGE
            xml = $@"<para>{xml}</para>";
            var sut = new XmlDocsReader(NullLogger.Instance, new XDocument(), Array.Empty <TypeId>());

            // ACT
            var textBlock = sut.ReadTextBlock(XElement.Parse(xml));

            // ASSERT

            var element    = Assert.Single(textBlock.Elements);
            var seeElement = Assert.IsType <SeeElement>(element);

            Assert.Equal(expected, seeElement);
        }
Exemplo n.º 6
0
        public void Visit(SeeElement element)
        {
            if (element is null)
            {
                throw new ArgumentNullException(nameof(element));
            }

            // While Visual Studio only allows referring to other code elements using the <c>cref</c> attribute,
            // linking to external resources (e.g. websites) is supported by as well using the <c>href</c> attribute.
            //
            // When a both attributes are present, the external link is ignored.

            MdSpan span;

            // <seealso /> references another assembly member
            if (element.MemberId != null)
            {
                if (element.Text.IsEmpty)
                {
                    span = m_SpanFactory.GetMdSpan(element.MemberId);
                }
                else
                {
                    var linkText = TextBlockToMarkdownConverter.ConvertToSpan(element.Text, m_SpanFactory);
                    span = m_SpanFactory.CreateLink(element.MemberId, linkText);
                }
            }
            // <seealso /> references an external resource
            else if (element.Target != null)
            {
                if (element.Text.IsEmpty)
                {
                    span = new MdLinkSpan(element.Target.ToString(), element.Target);
                }
                else
                {
                    var linkText = TextBlockToMarkdownConverter.ConvertToSpan(element.Text, m_SpanFactory);
                    span = new MdLinkSpan(linkText, element.Target);
                }
            }
            else
            {
                throw new InvalidOperationException($"Encountered instance of {nameof(SeeElement)} where both {nameof(SeeElement.MemberId)} and {nameof(SeeElement.Target)} were null.");
            }

            AddToCurrentParagraph(span);
        }
Exemplo n.º 7
0
        public void Visit(SeeElement element)
        {
            MdSpan span;

            // <seealso /> references another assembly member
            if (element.MemberId != null)
            {
                if (element.Text.IsEmpty)
                {
                    span = m_SpanFactory.GetMdSpan(element.MemberId);
                }
                else
                {
                    var linkText = TextBlockToMarkdownConverter.ConvertToSpan(element.Text, m_SpanFactory);
                    span = m_SpanFactory.CreateLink(element.MemberId, linkText);
                }
            }
            // <seealso /> references an external resource
            else if (element.Target != null)
            {
                if (element.Text.IsEmpty)
                {
                    span = new MdLinkSpan(element.Target.ToString(), element.Target);
                }
                else
                {
                    var linkText = TextBlockToMarkdownConverter.ConvertToSpan(element.Text, m_SpanFactory);
                    span = new MdLinkSpan(linkText, element.Target);
                }
            }
            else
            {
                throw new InvalidOperationException($"Encountered instance of {nameof(SeeElement)} where both {nameof(SeeElement.MemberId)} and {nameof(SeeElement.Target)} were null.");
            }
            Result.Add(span);
        }