Skip to the content.

MarkdownBuilder

logo

Markdown builder for .NET Core.

Build Status Nuget Downloads

See sample here

See API documentation here

Install

> dotnet add package MarkdownBuilder

Usage

Headers

new MarkdownHeader("H1", 1);
// # H1
//
new MarkdownHeader("H2", 2);
// ## H2
//
new MarkdownHeader("H3", 3);
// ### H3
//
new MarkdownHeader("H4", 4);
// #### H4
//
new MarkdownHeader("H5", 5);
// ##### H5
//
new MarkdownHeader("H6", 6);
// ###### H6
//

Paragraphs

new MarkdownParagraph("Lorem ipsum ...");
// Lorem ipsum ...
//

Emphasis

new MarkdownEmphasis("emphasis");
// *emphasis*
new MarkdownStrongEmphasis("strong emphasis");
// **strong emphasis**
new MarkdownStrikethrough("strikethrough");
// ~~strikethrough~~

Line Breaks

new MarkdownText("Line 1").AppendLineBreak().Append("Line 2");
// Line 1<br>
// Line 2

Lists

new MarkdownList("First item", "Second item");
// - First item
// - Second item
//
new MarkdownOrderedList("First item", "Second item");
// 1. First item
// 2. Second item
//
new MarkdownList(
    new MarkdownCheckListItem(true, "Done"),
    new MarkdownCheckListItem(false, "To do")
);
// - [x] Done
// - [ ] To do
//

Nested lists:

new MarkdownList(
    new MarkdownTextListItem("First item"),
    new MarkdownTextListItem("Second item"),
    new MarkdownList(
        new MarkdownTextListItem("Sub item 1"),
        new MarkdownTextListItem("Sub item 2")
    )
);
// - First item
// - Second item
//   - Sub item 1
//   - Sub item 2
//
new MarkdownLink(
    "markdown-builder-dotnet",
    "https://github.com/charlesdevandiere/markdown-builder-dotnet");
// [markdown-builder-dotnet](https://github.com/charlesdevandiere/markdown-builder-dotnet)

Images

new MarkdownImage(
    "logo",
    "https://raw.githubusercontent.com/charlesdevandiere/markdown-query-builder/master/logo.png");
// ![logo](https://raw.githubusercontent.com/charlesdevandiere/markdown-query-builder/master/logo.png)

Code blocks

new MarkdownInlineCode("code");
// `code`
new MarkdownCode("csharp", "Console.Write(\"Hello World!\");");
// ```csharp
// Console.Write("Hello World!");
// ```
//

Tables

new MarkdownTable(
    new MarkdownTableHeader(
        new MarkdownTableHeaderCell[]
        {
            new MarkdownTableHeaderCell("Name"),
            new MarkdownTableHeaderCell("Age", MarkdownTableTextAlignment.Right)
        }),
    new MarkdownTableRow[]
    {
        new MarkdownTableRow("John", "27"),
        new MarkdownTableRow("Xavier", "42")
    }
);
// | Name | Age |
// | --- | --: |
// | John | 27 |
// | Xavier | 42 |
//

Pretty-printed table with aligned columns:

var table = new MarkdownTable(
    new MarkdownTableHeader(
        new MarkdownTableHeaderCell("Name"),
        new MarkdownTableHeaderCell("Age", MarkdownTableTextAlignment.Right)
    ),
    new MarkdownTableRow[]
    {
        new MarkdownTableRow("John", "27"),
        new MarkdownTableRow("Xavier", "42")
    }
);
table.ToPrettyString();
// | Name   | Age |
// | ------ | --: |
// | John   |  27 |
// | Xavier |  42 |
//

Blockquotes

new MarkdownBlockquote("Lorem ipsum ...");
// > Lorem ipsum ...
//

Nested blockquotes with block elements:

new MarkdownBlockquote(
    new MarkdownParagraph("A paragraph"),
    new MarkdownList("Item 1", "Item 2"),
    new MarkdownBlockquote("Nested quote")
);
// > A paragraph
// >
// > - Item 1
// > - Item 2
// >
// > > Nested quote
//

Horizontal Rules

new MarkdownHorizontalRule();
// ---
//

Emojis

new MarkdownEmoji("thumbsup");
// :thumbsup:

Create markdown document

IMarkdownDocument document = new MarkdownDocument();

document.Append(new MarkdownHeader("Lorem ipsum", 1));
document.Append(
    new MarkdownParagraph(
        "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
    )
);

Console.Write(document);
// Output:
// # Lorem ipsum
//
// Lorem ipsum dolor sit amet, consectetur adipiscing elit.

Use ToPrettyString() to render the document with aligned table columns:

Console.Write(document.ToPrettyString());