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); }
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); }
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); }
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); }
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); }
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); }
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); }