Example #1
0
        public void Serializer_respects_HeadingStyle_serialization_option_02(int level)
        {
            var options = new MdSerializationOptions()
            {
                HeadingStyle = MdHeadingStyle.Setext
            };

            if (level == 1)
            {
                AssertToStringEquals(
                    $"Heading\r\n" +
                    $"=======\r\n",
                    new MdDocument(new MdHeading(level, "Heading")),
                    options);
            }
            else if (level == 2)
            {
                AssertToStringEquals(
                    $"Heading\r\n" +
                    $"-------\r\n",
                    new MdDocument(new MdHeading(level, "Heading")),
                    options);
            }
            else
            {
                AssertToStringEquals(
                    $"{new String('#', level)} Heading\r\n",
                    new MdDocument(new MdHeading(level, "Heading")),
                    options);
            }
        }
Example #2
0
        public void Serializer_respects_OrderedListStyle_serialization_option(MdOrderedListStyle style)
        {
            char listItemCharacter;

            switch (style)
            {
            case MdOrderedListStyle.Dot:
                listItemCharacter = '.';
                break;

            case MdOrderedListStyle.Parenthesis:
                listItemCharacter = ')';
                break;

            default:
                throw new NotImplementedException();
            }

            var options = new MdSerializationOptions()
            {
                OrderedListStyle = style
            };

            AssertToStringEquals(
                $"1{listItemCharacter} Item1\r\n" +
                $"2{listItemCharacter} Item2\r\n",
                new MdDocument(
                    new MdOrderedList(
                        new MdListItem("Item1"),
                        new MdListItem("Item2")
                        )),
                options
                );
        }
Example #3
0
        public void Serializer_respects_MinimumListIndentationWidth_for_bullet_lists(int indentation)
        {
            var options = new MdSerializationOptions()
            {
                MinimumListIndentationWidth = indentation
            };

            // List items are always indented by at least the length of the list marker.
            // In this test, the marker length is 2 for all items: '- '

            AssertToStringEquals(
                $"- Item1\r\n" +
                $"{new String(' ', Math.Max(indentation, 2))}- Item 1.1\r\n" +
                $"{new String(' ', Math.Max(indentation, 2) * 2)}- Item 1.1.1\r\n" +
                $"- Item2\r\n" +
                $"{new String(' ', Math.Max(indentation, 2))}- Item 2.1\r\n",
                new MdDocument(
                    new MdBulletList(
                        new MdListItem(
                            new MdParagraph("Item1"),
                            new MdBulletList(
                                new MdListItem(
                                    new MdParagraph("Item 1.1"),
                                    new MdBulletList(
                                        new MdListItem("Item 1.1.1"))))
                            ),
                        new MdListItem(
                            new MdParagraph("Item2"),
                            new MdBulletList(
                                new MdListItem("Item 2.1"))
                            )
                        )),
                options
                );
        }
Example #4
0
        public void Serializer_respects_the_TableStyle_serialization_option()
        {
            var options = new MdSerializationOptions()
            {
                TableStyle = MdTableStyle.Html
            };

            AssertToStringEquals(
                "<table>" + "\r\n" +
                "  <thead>" + "\r\n" +
                "    <tr>" + "\r\n" +
                "      <th>Column1</th>" + "\r\n" +
                "      <th>Column2</th>" + "\r\n" +
                "    </tr>" + "\r\n" +
                "  </thead>" + "\r\n" +
                "  <tbody>" + "\r\n" +
                "    <tr>" + "\r\n" +
                "      <td>Cell1</td>" + "\r\n" +
                "    </tr>" + "\r\n" +
                "    <tr>" + "\r\n" +
                "      <td>Cell3</td>" + "\r\n" +
                "      <td>Cell4</td>" + "\r\n" +
                "    </tr>" + "\r\n" +
                "  </tbody>" + "\r\n" +
                "</table>" + "\r\n",
                new MdDocument(
                    new MdTable(
                        new MdTableRow("Column1", "Column2"),
                        new MdTableRow("Cell1"),
                        new MdTableRow("Cell3", "Cell4"))),
                options
                );
        }
Example #5
0
        public void ToString_uses_the_default_text_formatter_if_formatter_from_serialization_options_is_null(char character)
        {
            var serializationOptions = new MdSerializationOptions {
                TextFormatter = null
            };

            Assert.Equal(
                $"prefix\\{character}suffix",
                new MdTextSpan($"prefix{character}suffix").ToString(serializationOptions)
                );
        }
Example #6
0
        public void Serializer_respects_ThematicBreakStyle_serialization_option(MdThematicBreakStyle style, string expectedBreak)
        {
            var options = new MdSerializationOptions()
            {
                ThematicBreakStyle = style
            };

            AssertToStringEquals(
                $"{expectedBreak}\r\n",
                new MdDocument(new MdThematicBreak()),
                options
                );
        }
Example #7
0
        public void Serializer_respects_HeadingStyle_serialization_option_01(int level)
        {
            var options = new MdSerializationOptions()
            {
                HeadingStyle = MdHeadingStyle.Atx
            };

            AssertToStringEquals(
                $"{new String('#', level)} Heading\r\n",
                new MdDocument(new MdHeading(level, "Heading")),
                options
                );
        }
Example #8
0
        public void Serializer_respects_HeadingAnchor_serialization_option_01()
        {
            var options = new MdSerializationOptions()
            {
                HeadingStyle       = MdHeadingStyle.Atx,
                HeadingAnchorStyle = MdHeadingAnchorStyle.Tag
            };

            AssertToStringEquals(
                "## <a id=\"heading\"></a> Heading\r\n",
                new MdDocument(new MdHeading(2, "Heading")),
                options
                );
        }
Example #9
0
        public void Serializer_respects_EmphasisStyle_serialization_option(MdEmphasisStyle emphasisStyle, char emphasisCharater)
        {
            var options = new MdSerializationOptions()
            {
                EmphasisStyle = emphasisStyle
            };

            AssertToStringEquals(
                $"# {emphasisCharater}Heading{emphasisCharater}\r\n",
                new MdDocument(
                    new MdHeading(1, new MdEmphasisSpan("Heading"))),
                options
                );
        }
Example #10
0
        public void ToString_respects_EmphasisStyle_from_serialization_options(MdEmphasisStyle emphasisStyle, char emphasisCharater)
        {
            var text = "Some text";
            var span = new MdEmphasisSpan(text);

            var options = new MdSerializationOptions()
            {
                EmphasisStyle = emphasisStyle
            };

            var expected = $"{emphasisCharater}{text}{emphasisCharater}";
            var actual   = span.ToString(options);

            Assert.Equal(expected, actual);
        }
Example #11
0
        public void Setext_headings_are_formatted_to_the_maximum_line_length_03()
        {
            var options = new MdSerializationOptions()
            {
                MaxLineLength = 20,
                HeadingStyle  = MdHeadingStyle.Setext
            };

            AssertToStringEquals(
                "Heading 1\r\n" +
                "=========\r\n",
                new MdDocument(new MdHeading(1, "Heading 1")),
                options
                );
        }
Example #12
0
        public void Serializer_respects_CodeBlockStyle_serialization_option(MdCodeBlockStyle style, char codeBlockChar)
        {
            var options = new MdSerializationOptions()
            {
                CodeBlockStyle = style
            };

            AssertToStringEquals(
                $"{codeBlockChar}{codeBlockChar}{codeBlockChar}\r\n" +
                $"Some Code\r\n" +
                $"{codeBlockChar}{codeBlockChar}{codeBlockChar}\r\n",
                new MdDocument(new MdCodeBlock("Some Code")),
                options
                );
        }
Example #13
0
        public void Paragraphs_are_formatted_to_the_maximum_line_length_01()
        {
            var options = new MdSerializationOptions()
            {
                MaxLineLength = 5
            };

            AssertToStringEquals(
                "aaaaaaaa\r\n" +
                "bbbb\r\n",
                new MdDocument(
                    new MdParagraph("aaaaaaaa bbbb")
                    ),
                options
                );
        }
Example #14
0
        public void Serializer_respects_HeadingAnchor_serialization_option_04()
        {
            // When HeadingAnchorStyle is 'Auto' do not include a tag if the
            // id is the same as the auto generated one

            var options = new MdSerializationOptions()
            {
                HeadingStyle       = MdHeadingStyle.Atx,
                HeadingAnchorStyle = MdHeadingAnchorStyle.Auto
            };

            AssertToStringEquals(
                "## Heading\r\n",
                new MdDocument(new MdHeading(2, "Heading")),
                options
                );
        }
Example #15
0
        public void Paragraphs_in_block_quotes_are_formatted_to_the_maximum_line_length()
        {
            var options = new MdSerializationOptions()
            {
                MaxLineLength = 5
            };

            AssertToStringEquals(
                "> aaaaaaaa\r\n" +
                "> bb\r\n" +
                "> cc\r\n",
                new MdDocument(
                    new MdBlockQuote(new MdParagraph("aaaaaaaa bb cc"))
                    ),
                options
                );
        }
Example #16
0
        public void Paragraphs_in_lists_are_formatted_to_the_maximum_line_length()
        {
            var options = new MdSerializationOptions()
            {
                MaxLineLength = 5
            };

            AssertToStringEquals(
                "- aaaaaaaa\r\n" +
                "  bb\r\n" +
                "  cc\r\n",
                new MdDocument(
                    new MdBulletList(new MdListItem(new MdParagraph("aaaaaaaa bb cc")))
                    ),
                options
                );
        }
Example #17
0
        public void ToString_uses_the_text_formatter_set_in_the_serialization_options_for_escaping(char character)
        {
            var value = Guid.NewGuid().ToString();

            var formatterMock = new Mock <ITextFormatter>();

            // return some placeholder data to ensure text is are passed through the formatter
            formatterMock.Setup(x => x.EscapeText(It.IsAny <string>())).Returns(value);

            var serializationOptions = new MdSerializationOptions {
                TextFormatter = formatterMock.Object
            };

            Assert.Equal(
                value,
                new MdTextSpan($"prefix{character}suffix").ToString(serializationOptions)
                );
        }
        public void Serializer_does_not_include_anchor_in_output_is_anchor_is_null_or_whitespace(string anchor)
        {
            var options = new MdSerializationOptions()
            {
                HeadingStyle       = MdHeadingStyle.Atx,
                HeadingAnchorStyle = MdHeadingAnchorStyle.Tag
            };

            var heading = new MdHeading(2, "Heading");

            heading.Anchor = anchor;

            AssertToStringEquals(
                "## Heading\r\n",
                new MdDocument(heading),
                options
                );
        }
Example #19
0
        public void Serializer_respects_BulletListStyle_serialization_option(MdBulletListStyle style, char listItemCharacter)
        {
            var options = new MdSerializationOptions()
            {
                BulletListStyle = style
            };

            AssertToStringEquals(
                $"{listItemCharacter} Item1\r\n" +
                $"{listItemCharacter} Item2\r\n",
                new MdDocument(
                    new MdBulletList(
                        new MdListItem("Item1"),
                        new MdListItem("Item2")
                        )
                    ),
                options
                );
        }
Example #20
0
        public void Serializer_changes_ThematicBreak_style_when_inside_bullet_list_with_a_conflicting_style(MdThematicBreakStyle thematicBreakStyle, char thematicBreakCharacter, MdBulletListStyle bulletListStyle, char bulletListCharacter)
        {
            var options = new MdSerializationOptions()
            {
                BulletListStyle    = bulletListStyle,
                ThematicBreakStyle = thematicBreakStyle
            };

            AssertToStringEquals(
                $"{bulletListCharacter} Item1\r\n" +
                $"\r\n" +
                $"  {thematicBreakCharacter}{thematicBreakCharacter}{thematicBreakCharacter}\r\n",
                new MdDocument(
                    new MdBulletList(
                        new MdListItem(new MdParagraph("Item1"), new MdThematicBreak())
                        )
                    ),
                options
                );
        }
Example #21
0
        public void Serializer_respects_HeadingAnchor_serialization_option_03()
        {
            var options = new MdSerializationOptions()
            {
                MaxLineLength      = 10,
                HeadingStyle       = MdHeadingStyle.Setext,
                HeadingAnchorStyle = MdHeadingAnchorStyle.Tag
            };

            AssertToStringEquals(
                "<a id=\"heading-heading-part-2\"></a>\r\n" +
                "\r\n" +
                "Heading,\r\n" +
                "heading\r\n" +
                "part 2\r\n" +
                "========\r\n",
                new MdDocument(new MdHeading(1, "Heading, heading part 2")),
                options
                );
        }
Example #22
0
        public void Serializer_respects_HeadingAnchor_serialization_option_05()
        {
            // When HeadingAnchorStyle is 'Auto' include a tag if the
            // id is the different from the auto generated one

            var options = new MdSerializationOptions()
            {
                HeadingStyle       = MdHeadingStyle.Atx,
                HeadingAnchorStyle = MdHeadingAnchorStyle.Auto
            };

            AssertToStringEquals(
                "## <a id=\"foo\"></a> Heading\r\n",
                new MdDocument(new MdHeading(2, "Heading")
            {
                Anchor = "foo"
            }),
                options
                );
        }
Example #23
0
 public ListPrefixHandler(MdSerializationOptions serializationOptions)
 {
     m_SerializationOptions = serializationOptions ?? throw new ArgumentNullException(nameof(serializationOptions));
 }
Example #24
0
 public DefaultTemplate(ChangeLogConfiguration configuration) : base(configuration)
 {
     SerializationOptions = MdSerializationOptions.Presets
                            .Get(configuration.Template.Default.MarkdownPreset.ToString())
                            .With(opts => { opts.HeadingAnchorStyle = MdHeadingAnchorStyle.Auto; });
 }
Example #25
0
 public sealed override void Save(string path, MdSerializationOptions markdownOptions) => GetDocument().Save(path, markdownOptions);
Example #26
0
 public static void Save <T>(this DocumentSet <T> documentSet, string directoryPath, bool cleanOutputDirectory, MdSerializationOptions markdownOptions) where T : IDocument
 {
     documentSet.Save(directoryPath, cleanOutputDirectory, (document, path) =>
     {
         if (document is MdDocument mdDocument)
         {
             mdDocument.Save(path, markdownOptions);
         }
         else if (document is IMarkdownDocument markdownDocument)
         {
             markdownDocument.Save(path, markdownOptions);
         }
         else
         {
             document.Save(path);
         }
     });
 }
Example #27
0
 public abstract void Save(string path, MdSerializationOptions options);
Example #28
0
 public DocumentSerializer(TextWriter writer, MdSerializationOptions?options)
 {
     m_Writer  = new PrefixTextWriter(writer ?? throw new ArgumentNullException(nameof(writer)));
     m_Options = options ?? MdSerializationOptions.Default;
 }
Example #29
0
 public BulletListPrefixHandler(MdSerializationOptions serializationOptions) : base(serializationOptions)
 {
 }
Example #30
0
        private int m_ListItemNumber = 0;       // the number of the list item (for ordered lists)


        public OrderedListPrefixHandler(MdSerializationOptions serializationOptions) : base(serializationOptions)
        {
        }