Пример #1
0
        protected override MdBlock ConvertToBlock()
        {
            var detailSections = Enumerable.Empty <ParameterDetailsSection>()
                                 .Concat(m_Model.PositionalParameters.Select(v => new PositionalParameterDetailsSection(v)).Cast <ParameterDetailsSection>())
                                 .Concat(m_Model.NamedParameters.Select(o => new NamedParameterDetailsSection(o)).Cast <ParameterDetailsSection>())
                                 .Concat(m_Model.SwitchParameters.Select(o => new SwitchParameterDetailsSection(o)).Cast <ParameterDetailsSection>())
                                 .ToArray();


            var anchors = detailSections.ToDictionary(x => x.Parameter, x => x.Heading.Anchor);

            var block = new MdContainerBlock()
            {
                new MdHeading(2, "Parameters"),
                new CommandParametersTable(m_Model, parameter => anchors[parameter], parameter => anchors[parameter], parameter => anchors[parameter])
            };

            var first = true;

            foreach (var section in detailSections)
            {
                if (detailSections.Length > 1 && !first)
                {
                    block.Add(new MdThematicBreak());
                }

                block.Add(section);
                first = false;
            }

            return(block);
        }
Пример #2
0
 public void Visit(MdContainerBlock containerBlock)
 {
     foreach (var block in containerBlock)
     {
         block.Accept(this);
     }
 }
Пример #3
0
        protected virtual void AddParametersSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (overload.Parameters.Count == 0)
            {
                return;
            }

            var parametersBlock = new MdContainerBlock();

            block.Add(parametersBlock);


            parametersBlock.Add(new MdHeading("Parameters", headingLevel));

            foreach (var parameter in overload.Parameters)
            {
                parametersBlock.Add(
                    new MdParagraph(
                        new MdCodeSpan(parameter.Name),
                        "  ",
                        GetMdSpan(parameter.ParameterType)
                        ));

                if (parameter.Description != null)
                {
                    parametersBlock.Add(ConvertToBlock(parameter.Description));
                }
            }
        }
Пример #4
0
        public void ConvertToBlock_returns_expected_result_for_for_lists([CombinatorialValues(ListType.Bullet, ListType.None, ListType.Number)] ListType listType)
        {
            // ARRANGE
            var input = CreateList(
                listType,
                null,
                CreateListItem("Description 1"),
                CreateListItem("Term 2", "Description 2")
                );


            var list = listType == ListType.Number ? new MdOrderedList() : (MdList) new MdBulletList();

            list.Add(
                new MdListItem(
                    new MdParagraph("Description 1")));
            list.Add(
                new MdListItem(
                    new MdParagraph(new MdStrongEmphasisSpan("Term 2", ":"), " "),
                    new MdParagraph("Description 2")));

            var expected = new MdContainerBlock(list);

            // ACT
            var actual = TextBlockToMarkdownConverter.ConvertToBlock(input, Mock.Of <IMdSpanFactory>());

            // ASSERT
            AssertEquals(expected, actual);
        }
Пример #5
0
 private void AddRemarksSection(MdContainerBlock block)
 {
     if (!Model.Remarks.IsEmpty)
     {
         block.Add(new MdHeading(2, "Remarks"));
         block.Add(ConvertToBlock(Model.Remarks));
     }
 }
Пример #6
0
        protected virtual void AddDefinitionSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (!overload.Summary.IsEmpty)
            {
                block.Add(ConvertToBlock(overload.Summary));
            }

            block.Add(new MdCodeBlock(overload.CSharpDefinition, "csharp"));
        }
Пример #7
0
        public ConvertToBlockVisitor(IMdSpanFactory spanFactory)
        {
            m_SpanFactory = spanFactory ?? throw new ArgumentNullException(nameof(spanFactory));

            Result = new MdContainerBlock();

            m_Blocks = new Stack <MdContainerBlockBase>();
            m_Blocks.Push(Result);
        }
Пример #8
0
        protected override void AddValueSection(MdContainerBlock block)
        {
            block.Add(new MdHeading("Field Value", 2));
            block.Add(GetMdParagraph(Model.Type));

            if (!Model.Value.IsEmpty)
            {
                block.Add(ConvertToBlock(Model.Value));
            }
        }
Пример #9
0
        private void AddExampleSection(MdContainerBlock block)
        {
            if (Model.Example.IsEmpty)
            {
                return;
            }

            block.Add(new MdHeading("Example", 2));
            block.Add(ConvertToBlock(Model.Example));
        }
Пример #10
0
        protected virtual void AddRemarksSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (overload.Remarks.IsEmpty)
            {
                return;
            }

            block.Add(new MdHeading("Remarks", headingLevel));
            block.Add(ConvertToBlock(overload.Remarks));
        }
Пример #11
0
        protected virtual void AddExampleSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (overload.Example.IsEmpty)
            {
                return;
            }

            block.Add(new MdHeading("Example", headingLevel));
            block.Add(ConvertToBlock(overload.Example));
        }
Пример #12
0
        protected virtual void AddExampleSection(MdContainerBlock block)
        {
            if (Model.Example.IsEmpty)
            {
                return;
            }

            block.Add(new MdHeading(2, "Example"));
            block.Add(ConvertToBlock(Model.Example));
        }
Пример #13
0
        protected virtual void AddRemarksSection(MdContainerBlock block)
        {
            if (Model.Remarks.IsEmpty)
            {
                return;
            }

            block.Add(new MdHeading(2, "Remarks"));
            block.Add(ConvertToBlock(Model.Remarks));
        }
Пример #14
0
 private void AddSeeAlsoSection(MdContainerBlock block)
 {
     if (Model.SeeAlso.Count > 0)
     {
         block.Add(new MdHeading(2, "See Also"));
         block.Add(
             new MdBulletList(
                 Model.SeeAlso.Select(seeAlso => new MdListItem(ConvertToSpan(seeAlso)))
                 ));
     }
 }
Пример #15
0
        protected virtual void AddDefinitionSection(MdContainerBlock block)
        {
            if (!Model.Summary.IsEmpty)
            {
                block.Add(ConvertToBlock(Model.Summary));
            }

            block.Add(
                new MdCodeBlock(Model.CSharpDefinition, "csharp")
                );
        }
Пример #16
0
        private void AddValueSubSection(MdContainerBlock block, IndexerOverloadDocumentation overload, int headingLevel)
        {
            block.Add(new MdHeading("Indexer Value", headingLevel));
            block.Add(
                GetMdParagraph(overload.Type)
                );

            if (overload.Value != null)
            {
                block.Add(ConvertToBlock(overload.Value));
            }
        }
Пример #17
0
        public void ConvertToBlock_returns_expected_result_for_a_TextBlock()
        {
            // ARRANGE
            var input    = CreateTextBlock(new TextElement("My Text"));
            var expected = new MdContainerBlock(new MdParagraph("My Text"));

            // ACT
            var actual = TextBlockToMarkdownConverter.ConvertToBlock(input, Mock.Of <IMdSpanFactory>());

            // ASSERT
            AssertEquals(expected, actual);
        }
Пример #18
0
        protected virtual void AddSeeAlsoSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (overload.SeeAlso.Count == 0)
            {
                return;
            }

            block.Add(new MdHeading("See Also", headingLevel));
            block.Add(
                new MdBulletList(
                    overload.SeeAlso.Select(seeAlso => new MdListItem(ConvertToSpan(seeAlso)))
                    ));
        }
Пример #19
0
        public void DeepEquals_returns_expected_value()
        {
            var instance1 = new MdContainerBlock(new MdParagraph());
            var instance2 = new MdContainerBlock(new MdParagraph());
            var instance3 = new MdContainerBlock(new MdParagraph(new MdTextSpan("Text")));

            Assert.True(instance1.DeepEquals(instance1));
            Assert.True(instance1.DeepEquals(instance2));

            Assert.False(instance1.DeepEquals(null));
            Assert.False(instance1.DeepEquals(instance3));
            Assert.False(instance1.DeepEquals(new MdParagraph()));
        }
Пример #20
0
        protected override void AddValueSection(MdContainerBlock block)
        {
            block.Add(new MdHeading("Property Value", 2));
            block.Add(
                GetMdParagraph(Model.Type)
                );

            if (Model.Value != null)
            {
                block.Add(ConvertToBlock(Model.Value));
            }

            // After the value section, add the Exceptions section
            AddExceptionsSection(block);
        }
Пример #21
0
        private void AddNamespacesList(MdContainerBlock block)
        {
            if (!Model.Namespaces.Any())
            {
                return;
            }

            block.Add(new MdHeading(2, "Namespaces"));

            block.Add(
                new MdBulletList(
                    Model.Namespaces
                    .OrderBy(x => x.Name, StringComparer.Ordinal)
                    .Select(@namespace => new MdListItem(GetMdSpan(@namespace.NamespaceId))
                            )));
        }
Пример #22
0
        private void AddExceptionsSection(MdContainerBlock block)
        {
            if (Model.Exceptions.Count == 0)
            {
                return;
            }

            block.Add(new MdHeading("Exceptions", 2));

            foreach (var exception in Model.Exceptions)
            {
                block.Add(
                    GetMdParagraph(exception.Type),
                    ConvertToBlock(exception.Text)
                    );
            }
        }
Пример #23
0
        protected virtual void AddExceptionsSubSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            if (overload.Exceptions.Count == 0)
            {
                return;
            }

            block.Add(new MdHeading("Exceptions", headingLevel));

            foreach (var exception in overload.Exceptions)
            {
                block.Add(
                    GetMdParagraph(exception.Type),
                    ConvertToBlock(exception.Text)
                    );
            }
        }
Пример #24
0
        private void AddSimpleMembersSection(MdContainerBlock block, string sectionHeading, IEnumerable <SimpleMemberDocumentation> members)
        {
            if (members.Any())
            {
                block.Add(new MdHeading(sectionHeading, 2));

                var table = new MdTable(new MdTableRow("Name", "Description"));
                foreach (var member in members.OrderBy(x => x.Name, StringComparer.Ordinal))
                {
                    table.Add(
                        new MdTableRow(
                            CreateLink(member.MemberId, member.Name),
                            ConvertToSpan(member.Summary)
                            ));
                }
                block.Add(table);
            }
        }
Пример #25
0
        protected void AddOverloadsTableSection(MdContainerBlock block, IEnumerable <TOverload> overloads, int headingLevel)
        {
            var table = new MdTable(new MdTableRow("Signature", "Description"));

            foreach (var overload in overloads)
            {
                // optimization: we know the section we're linking to is on the same page
                // so we can create the link to the anchor without going through PageBase.CreateLink()
                var link = new MdLinkSpan(overload.Signature, "#" + m_Headings.Value[overload.MemberId].Anchor);
                table.Add(
                    new MdTableRow(link, ConvertToSpan(overload.Summary))
                    );
            }

            block.Add(
                new MdHeading("Overloads", headingLevel),
                table
                );
        }
Пример #26
0
        public void Initialization_of_MdContainerBlock_using_constructor()
        {
            _ = new MdContainerBlock();

            _ = new MdContainerBlock(new MdContainerBlock());
            _ = new MdContainerBlock(new MdContainerBlock(), new MdContainerBlock());

            _ = new MdContainerBlock(new MdListItem());
            _ = new MdContainerBlock(new MdListItem(), new MdListItem());

            _ = new MdContainerBlock(new MdBlockQuote());
            _ = new MdContainerBlock(new MdBlockQuote(), new MdBlockQuote());

            _ = new MdContainerBlock(new MdBulletList());
            _ = new MdContainerBlock(new MdOrderedList());

            _ = new MdContainerBlock(new MdAdmonition("note"));
            _ = new MdContainerBlock(new MdAdmonition("note"), new MdAdmonition("note"));
        }
Пример #27
0
        public void ConvertToBlock_returns_expected_result_for_lists_02([CombinatorialValues(1, 2, 10)] int numberOfListItems)
        {
            // ARRANGE
            var input = CreateList(
                ListType.Number,
                null,
                Enumerable.Range(1, numberOfListItems).Select(i => CreateListItem($"Item {i}"))
                );

            var expected = new MdContainerBlock(
                new MdOrderedList(
                    Enumerable.Range(1, numberOfListItems).Select(i => new MdListItem($"Item {i}"))
                    ));

            // ACT
            var actual = TextBlockToMarkdownConverter.ConvertToBlock(input, Mock.Of <IMdSpanFactory>());

            // ASSERT
            AssertEquals(expected, actual);
        }
Пример #28
0
        protected void AddDeclaringTypeSection(MdContainerBlock block)
        {
            var paragraph = new MdParagraph(
                new MdStrongEmphasisSpan("Declaring Type:"), " ", GetMdSpan(Model.TypeDocumentation.TypeId),
                "\r\n",
                new MdStrongEmphasisSpan("Namespace:"), " ", GetMdSpan(Model.TypeDocumentation.NamespaceDocumentation.NamespaceId),
                "\r\n",
                new MdStrongEmphasisSpan("Assembly:"), " " + Model.AssemblyDocumentation.Name
                );

            if (m_Configuration.Template.Default.IncludeVersion)
            {
                paragraph.Add("\r\n");
                paragraph.Add(new MdCompositeSpan(
                                  new MdStrongEmphasisSpan("Assembly Version:"), " " + Model.AssemblyDocumentation.Version)
                              );
            }

            block.Add(paragraph);
        }
Пример #29
0
        protected virtual void AddOverloadSection(MdContainerBlock block, TOverload overload, int headingLevel)
        {
            AddObsoleteWarning(block, overload);

            AddDefinitionSubSection(block, overload, headingLevel + 1);

            AddTypeParametersSubSection(block, overload, headingLevel + 1);

            AddParametersSubSection(block, overload, headingLevel + 1);

            AddRemarksSubSection(block, overload, headingLevel + 1);

            AddReturnsSubSection(block, overload, headingLevel + 1);

            AddExceptionsSubSection(block, overload, headingLevel + 1);

            AddExampleSubSection(block, overload, headingLevel + 1);

            AddSeeAlsoSubSection(block, overload, headingLevel + 1);
        }
Пример #30
0
        /// <summary>
        /// Gets the change log's content block
        /// </summary>
        protected virtual MdBlock GetChangeLogContentBlock(ApplicationChangeLog model)
        {
            var container = new MdContainerBlock();

            // for each version, add the changes to the document
            // (changeLog.ChangeLogs is ordered by version)
            var firstElement = true;

            foreach (var versionChangeLog in model.ChangeLogs)
            {
                if (!firstElement)
                {
                    container.Add(new MdThematicBreak());
                }

                container.Add(GetVersionBlock(versionChangeLog));
                firstElement = false;
            }

            return(container);
        }