API Reference

Class

MarkdownDoc

Namespace OfficeIMO.Markdown
Assembly OfficeIMO.Markdown

Root document container and fluent API entrypoint for composing Markdown. Supports a fluent-chaining style and an explicit object model via IMarkdownBlock).

Inheritance

Usage

This type appears in these public API surfaces even when no hand-authored example is attached directly to the page.

Returned or exposed by

Constructors

Methods

public MarkdownDoc Add(IMarkdownBlock block) #
Returns: MarkdownDoc

Adds a block instance (object-model style).

Parameters

block OfficeIMO.Markdown.IMarkdownBlock requiredposition: 0
Block to append to the document.

Returns

Same MarkdownDoc for chaining.

public MarkdownDoc AddRange(IEnumerable<IMarkdownBlock> blocks) #
Returns: MarkdownDoc

Adds multiple blocks and binds the resulting object tree once after the batch is complete.

Parameters

blocks System.Collections.Generic.IEnumerable{OfficeIMO.Markdown.IMarkdownBlock} requiredposition: 0
Blocks to append in source order.

Returns

Same MarkdownDoc for chaining.

Callout 2 overloads
public MarkdownDoc Callout(String kind, String title, String body) #
Returns: MarkdownDoc

Adds a callout/admonition block (Docs-style).

Parameters

kind System.String requiredposition: 0
title System.String requiredposition: 1
body System.String requiredposition: 2
public MarkdownDoc Callout(String kind, String title, Action<MarkdownDoc> buildBody) #
Returns: MarkdownDoc

Adds a callout/admonition block with structured markdown body content.

Parameters

kind System.String requiredposition: 0
title System.String requiredposition: 1
buildBody System.Action{OfficeIMO.Markdown.MarkdownDoc} requiredposition: 2
public MarkdownDoc Caption(String caption) #
Returns: MarkdownDoc

Sets a caption for the last captionable block (image/code), or appends a paragraph.

Parameters

caption System.String requiredposition: 0
public MarkdownDoc Code(String language, String content) #
Returns: MarkdownDoc

Adds a fenced code block.

Parameters

language System.String requiredposition: 0
content System.String requiredposition: 1
public static MarkdownDoc Create() #
Returns: MarkdownDoc

Creates a new, empty Markdown document.

public IEnumerable<HeadingBlock> DescendantHeadings() #
Returns: IEnumerable<HeadingBlock>

Enumerates all headings in document order, including nested headings.

public IEnumerable<ListItem> DescendantListItems() #
Returns: IEnumerable<ListItem>

Enumerates all list items in document order, including nested items.

public IEnumerable<IMarkdownBlock> DescendantsAndSelf() #
Returns: IEnumerable<IMarkdownBlock>

Enumerates all document blocks depth-first, including front matter when present.

public IEnumerable<TBlock> DescendantsOfType<TBlock>() #
Returns: IEnumerable<TBlock>

Enumerates all document blocks of the requested type depth-first.

Type Parameters

TBlock
public IEnumerable<TableCell> DescendantTableCells() #
Returns: IEnumerable<TableCell>

Enumerates all table cells in document order, including header cells and nested tables.

public IEnumerable<TableRow> DescendantTableRows() #
Returns: IEnumerable<TableRow>

Enumerates all table rows in document order, including header rows and nested tables.

public IEnumerable<TableBlock> DescendantTables() #
Returns: IEnumerable<TableBlock>

Enumerates all tables in document order, including nested tables.

public MarkdownDoc Details(String summary, Action<MarkdownDoc> buildBody, Boolean open = false) #
Returns: MarkdownDoc

Adds a collapsible details block.

Parameters

summary System.String requiredposition: 0
buildBody System.Action{OfficeIMO.Markdown.MarkdownDoc} requiredposition: 1
open System.Boolean = false optionalposition: 2
public MarkdownDoc Dl(Action<DefinitionListBuilder> build) #
Returns: MarkdownDoc

Adds a definition list.

Parameters

build System.Action{OfficeIMO.Markdown.DefinitionListBuilder} requiredposition: 0
public TBlock FindFirstDescendantOfType<TBlock>() #
Returns: TBlock

Finds the first document block of the requested type depth-first.

Type Parameters

TBlock
public TBlock FindFirstTopLevelBlockOfType<TBlock>() #
Returns: TBlock

Finds the first top-level document block of the requested type.

Type Parameters

TBlock
public Entry FindFrontMatterEntry(String key, StringComparison comparison = OrdinalIgnoreCase) #
Returns: Entry

Finds a front matter entry by key when the document header is present.

Parameters

key System.String requiredposition: 0
comparison System.StringComparison = OrdinalIgnoreCase optionalposition: 1
public HeadingInfo FindHeading(String text, StringComparison comparison = OrdinalIgnoreCase) #
Returns: HeadingInfo

Finds the first heading whose plain text matches the provided heading text.

Parameters

text System.String requiredposition: 0
comparison System.StringComparison = OrdinalIgnoreCase optionalposition: 1
public HeadingInfo FindHeadingByAnchor(String anchor) #
Returns: HeadingInfo

Finds the heading with the specified resolved anchor, if present.

Parameters

anchor System.String requiredposition: 0
public IReadOnlyList<HeadingInfo> FindHeadings(String text, StringComparison comparison = OrdinalIgnoreCase) #
Returns: IReadOnlyList<HeadingInfo>

Finds headings whose plain text matches the provided heading text.

Parameters

text System.String requiredposition: 0
comparison System.StringComparison = OrdinalIgnoreCase optionalposition: 1
public MarkdownDoc FrontMatter(Object data) #
Returns: MarkdownDoc

Sets YAML front matter from an anonymous object or dictionary.

Parameters

data System.Object requiredposition: 0
public MarkdownDoc FrontMatter<T>(T data) #
Returns: MarkdownDoc

Sets YAML front matter from a type known at publish time.

Type Parameters

T

Parameters

data ``0 requiredposition: 0
public String GetHeadingAnchor(HeadingBlock heading) #
Returns: String

Gets the resolved anchor id for a heading within this document.

Parameters

heading OfficeIMO.Markdown.HeadingBlock requiredposition: 0
public IReadOnlyList<HeadingInfo> GetHeadingInfos() #
Returns: IReadOnlyList<HeadingInfo>

Returns resolved heading metadata in document order.

public MarkdownDoc H1(String text) #
Returns: MarkdownDoc

Adds an H1 heading.

Parameters

text System.String requiredposition: 0
public MarkdownDoc H2(String text) #
Returns: MarkdownDoc

Adds an H2 heading.

Parameters

text System.String requiredposition: 0
public MarkdownDoc H3(String text) #
Returns: MarkdownDoc

Adds an H3 heading.

Parameters

text System.String requiredposition: 0
public MarkdownDoc H4(String text) #
Returns: MarkdownDoc

Adds an H4 heading.

Parameters

text System.String requiredposition: 0
public MarkdownDoc H5(String text) #
Returns: MarkdownDoc

Adds an H5 heading.

Parameters

text System.String requiredposition: 0
public MarkdownDoc H6(String text) #
Returns: MarkdownDoc

Adds an H6 heading.

Parameters

text System.String requiredposition: 0
public Boolean HasDescendantOfType<TBlock>() #
Returns: Boolean

Checks whether the document has any block of the requested type depth-first.

Type Parameters

TBlock
public Boolean HasFrontMatterEntry(String key, StringComparison comparison = OrdinalIgnoreCase) #
Returns: Boolean

Checks whether the document header contains an entry with the specified key.

Parameters

key System.String requiredposition: 0
comparison System.StringComparison = OrdinalIgnoreCase optionalposition: 1
public Boolean HasHeading(String text, StringComparison comparison = OrdinalIgnoreCase) #
Returns: Boolean

Checks whether a heading whose plain text matches the provided heading text is present.

Parameters

text System.String requiredposition: 0
comparison System.StringComparison = OrdinalIgnoreCase optionalposition: 1
public Boolean HasHeadingAnchor(String anchor) #
Returns: Boolean

Checks whether a heading with the specified resolved anchor is present.

Parameters

anchor System.String requiredposition: 0
public Boolean HasTopLevelBlockOfType<TBlock>() #
Returns: Boolean

Checks whether the document has a top-level block of the requested type.

Type Parameters

TBlock
public MarkdownDoc Hr() #
Returns: MarkdownDoc

Adds a horizontal rule.

Image 2 overloads
public MarkdownDoc Image(String path, String alt, String title) #
Returns: MarkdownDoc

Adds an image block with optional alt text and title.

Parameters

path System.String requiredposition: 0
alt System.String requiredposition: 1
title System.String requiredposition: 2
public MarkdownDoc Image(String path, String alt = null, String title = null, Nullable<Double> width = null, Nullable<Double> height = null) #
Returns: MarkdownDoc

Adds an image block with optional alt text, title, and size hints.

Parameters

path System.String requiredposition: 0
alt System.String = null optionalposition: 1
title System.String = null optionalposition: 2
width System.Nullable{System.Double} = null optionalposition: 3
height System.Nullable{System.Double} = null optionalposition: 4
Load 2 overloads
public static MarkdownDoc Load(String path, MarkdownReaderOptions options = null, Encoding encoding = null) #
Returns: MarkdownDoc

Loads and parses a Markdown file.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.MarkdownReaderOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
public static MarkdownDoc Load(Stream stream, MarkdownReaderOptions options = null, Encoding encoding = null) #
Returns: MarkdownDoc

Loads and parses Markdown from a caller-owned stream.

Parameters

stream System.IO.Stream requiredposition: 0
options OfficeIMO.Markdown.MarkdownReaderOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
LoadAsync 2 overloads
public static async Task<MarkdownDoc> LoadAsync(String path, MarkdownReaderOptions options = null, Encoding encoding = null, CancellationToken cancellationToken = null) #
Returns: Task<MarkdownDoc>

Asynchronously loads and parses a Markdown file.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.MarkdownReaderOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
cancellationToken System.Threading.CancellationToken = null optionalposition: 3
public static async Task<MarkdownDoc> LoadAsync(Stream stream, MarkdownReaderOptions options = null, Encoding encoding = null, CancellationToken cancellationToken = null) #
Returns: Task<MarkdownDoc>

Asynchronously loads and parses Markdown from a caller-owned stream.

Parameters

stream System.IO.Stream requiredposition: 0
options OfficeIMO.Markdown.MarkdownReaderOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
cancellationToken System.Threading.CancellationToken = null optionalposition: 3
public MarkdownDoc Ol(Action<OrderedListBuilder> build) #
Returns: MarkdownDoc

Adds an ordered list.

Parameters

build System.Action{OfficeIMO.Markdown.OrderedListBuilder} requiredposition: 0
public MarkdownDoc Ol<T>(IEnumerable<T> items, Int32 start = 1) #
Returns: MarkdownDoc

Adds an ordered list from a sequence of items using ToString().

Type Parameters

T

Parameters

items System.Collections.Generic.IEnumerable{``0} requiredposition: 0
start System.Int32 = 1 optionalposition: 1
P 2 overloads
public MarkdownDoc P(String text) #
Returns: MarkdownDoc

Adds a paragraph with plain text.

Parameters

text System.String requiredposition: 0
public MarkdownDoc P(Action<MarkdownParagraphBuilder> build) #
Returns: MarkdownDoc

Adds a paragraph composed with the paragraph builder.

Parameters

build System.Action{OfficeIMO.Markdown.MarkdownParagraphBuilder} requiredposition: 0
Quote 2 overloads
public MarkdownDoc Quote(String text) #
Returns: MarkdownDoc

Adds a simple block quote with a single line of text.

Parameters

text System.String requiredposition: 0
public MarkdownDoc Quote(Action<QuoteBuilder> build) #
Returns: MarkdownDoc

Adds a block quote composed via QuoteBuilder.

Parameters

build System.Action{OfficeIMO.Markdown.QuoteBuilder} requiredposition: 0
public MarkdownDoc Rewrite(MarkdownRewriter rewriter) #
Returns: MarkdownDoc

Rewrites the document using the provided rewriter.

Parameters

rewriter OfficeIMO.Markdown.MarkdownRewriter requiredposition: 0
Save 2 overloads
public Void Save(String path, MarkdownWriteOptions options = null, Encoding encoding = null) #
Returns: Void

Saves this document as Markdown.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
public Void Save(Stream stream, MarkdownWriteOptions options = null, Encoding encoding = null) #
Returns: Void

Writes this document as Markdown to a caller-owned stream.

Parameters

stream System.IO.Stream requiredposition: 0
options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
public Void SaveAsHtml(String path, HtmlOptions options = null) #
Returns: Void

Saves HTML to the specified file. When ExternalFile is used, writes a sidecar CSS file next to the HTML and links it.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 1
public async Task SaveAsHtmlAsync(String path, HtmlOptions options = null, CancellationToken cancellationToken = null) #
Returns: Task

Asynchronously saves HTML to the specified file. When ExternalFile is used, writes a sidecar CSS file next to the HTML and links it.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 1
cancellationToken System.Threading.CancellationToken = null optionalposition: 2
SaveAsync 2 overloads
public async Task SaveAsync(String path, MarkdownWriteOptions options = null, Encoding encoding = null, CancellationToken cancellationToken = null) #
Returns: Task

Asynchronously saves this document as Markdown.

Parameters

path System.String requiredposition: 0
options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
cancellationToken System.Threading.CancellationToken = null optionalposition: 3
public async Task SaveAsync(Stream stream, MarkdownWriteOptions options = null, Encoding encoding = null, CancellationToken cancellationToken = null) #
Returns: Task

Asynchronously writes this document as Markdown to a caller-owned stream.

Parameters

stream System.IO.Stream requiredposition: 0
options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 1
encoding System.Text.Encoding = null optionalposition: 2
cancellationToken System.Threading.CancellationToken = null optionalposition: 3
public MarkdownDoc Table(Action<TableBuilder> build) #
Returns: MarkdownDoc

Adds a table built with TableBuilder.

Parameters

build System.Action{OfficeIMO.Markdown.TableBuilder} requiredposition: 0
public MarkdownDoc TableAuto(Action<TableBuilder> build, Boolean alignNumeric = true, Boolean alignDates = true) #
Returns: MarkdownDoc

Builds a table via TableBuilder, then applies auto-alignment heuristics if requested.

Parameters

build System.Action{OfficeIMO.Markdown.TableBuilder} requiredposition: 0
alignNumeric System.Boolean = true optionalposition: 1
alignDates System.Boolean = true optionalposition: 2
public MarkdownDoc TableFrom(Object data) #
Returns: MarkdownDoc

Convenience to add a table from arbitrary data; see Object) for rules.

Parameters

data System.Object requiredposition: 0
public MarkdownDoc TableFromAuto(Object data, Action<TableFromOptions> configure = null, Boolean alignNumeric = true, Boolean alignDates = true) #
Returns: MarkdownDoc

Creates a table from data and applies auto-alignment heuristics (numeric right, dates center) if requested.

Parameters

data System.Object requiredposition: 0
configure System.Action{OfficeIMO.Markdown.TableFromOptions} = null optionalposition: 1
alignNumeric System.Boolean = true optionalposition: 2
alignDates System.Boolean = true optionalposition: 3
public MarkdownDoc TableFrom<T>(IEnumerable<T> items, params ValueTuple<String, Func<T, Object>>[] columns) #
Returns: MarkdownDoc

Convenience to add a table from a sequence using column selectors.

Type Parameters

T

Parameters

items System.Collections.Generic.IEnumerable{``0} requiredposition: 0
columns System.ValueTuple{System.String,System.Func{``0,System.Object}}[] requiredposition: 1
public Byte[] ToBytes(MarkdownWriteOptions options = null, Encoding encoding = null) #
Returns: Byte[]

Encodes this document as Markdown.

Parameters

options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 0
encoding System.Text.Encoding = null optionalposition: 1
public MarkdownDoc Toc(Action<TocOptions> configure = null, Boolean placeAtTop = false) #
Returns: MarkdownDoc

Generates a Table of Contents from headings already present in the document and inserts it.

Parameters

configure System.Action{OfficeIMO.Markdown.TocOptions} = null optionalposition: 0
Optional TOC options.
placeAtTop System.Boolean = false optionalposition: 1
When true, inserts TOC as the first block; otherwise appended.
public MarkdownDoc TocAtTop(String title = "Contents", Int32 min = 1, Int32 max = 3, Boolean ordered = false, Int32 titleLevel = 2) #
Returns: MarkdownDoc

Convenience helper to insert a Table of Contents at the top with common parameters.

Parameters

title System.String = "Contents" optionalposition: 0
min System.Int32 = 1 optionalposition: 1
max System.Int32 = 3 optionalposition: 2
ordered System.Boolean = false optionalposition: 3
titleLevel System.Int32 = 2 optionalposition: 4
public MarkdownDoc TocForPreviousHeading(String title = "Contents", Int32 min = 2, Int32 max = 6, Boolean ordered = false, Int32 titleLevel = 3) #
Returns: MarkdownDoc

Inserts a section TOC for the nearest preceding heading. Useful to place a small TOC under a section.

Parameters

title System.String = "Contents" optionalposition: 0
min System.Int32 = 2 optionalposition: 1
max System.Int32 = 6 optionalposition: 2
ordered System.Boolean = false optionalposition: 3
titleLevel System.Int32 = 3 optionalposition: 4
public MarkdownDoc TocForSection(String headingTitle, String title = "Contents", Int32 min = 2, Int32 max = 6, Boolean ordered = false, Int32 titleLevel = 3) #
Returns: MarkdownDoc

Inserts a section TOC scoped to the named heading.

Parameters

headingTitle System.String requiredposition: 0
title System.String = "Contents" optionalposition: 1
min System.Int32 = 2 optionalposition: 2
max System.Int32 = 6 optionalposition: 3
ordered System.Boolean = false optionalposition: 4
titleLevel System.Int32 = 3 optionalposition: 5
public MarkdownDoc TocHere(Action<TocOptions> configure = null) #
Returns: MarkdownDoc

Inserts a TOC placeholder at the current position without a title heading by default.

Parameters

configure System.Action{OfficeIMO.Markdown.TocOptions} = null optionalposition: 0
public String ToHtmlDocument(HtmlOptions options = null) #
Returns: String

Renders a standalone HTML5 document with optional CSS/JS assets.

Parameters

options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 0
public String ToHtmlFragment(HtmlOptions options = null) #
Returns: String

Renders an embeddable HTML fragment. Wraps in <article class="markdown-body"> by default.

Parameters

options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 0
public String ToHtmlFragmentWithCss(HtmlOptions options = null) #
Returns: String

Renders an embeddable HTML fragment and inlines the computed CSS and tiny scripts at the top/bottom of the fragment. Useful when you want a single self-contained chunk without a full HTML document.

Parameters

options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 0
public HtmlRenderParts ToHtmlParts(HtmlOptions options = null) #
Returns: HtmlRenderParts

Returns rendered parts for advanced embedding (Head, Body, Css, Scripts).

Parameters

options OfficeIMO.Markdown.HtmlOptions = null optionalposition: 0
ToMarkdown 2 overloads
public String ToMarkdown() #
Returns: String

Renders the document to Markdown string.

public String ToMarkdown(MarkdownWriteOptions options) #
Returns: String

Renders the document to Markdown string using optional writer extensions or portability fallbacks.

Parameters

options OfficeIMO.Markdown.MarkdownWriteOptions requiredposition: 0
public IEnumerable<TBlock> TopLevelBlocksOfType<TBlock>() #
Returns: IEnumerable<TBlock>

Enumerates top-level document blocks of the requested type.

Type Parameters

TBlock
public MemoryStream ToStream(MarkdownWriteOptions options = null, Encoding encoding = null) #
Returns: MemoryStream

Encodes this document in a new writable stream positioned at the beginning.

Parameters

options OfficeIMO.Markdown.MarkdownWriteOptions = null optionalposition: 0
encoding System.Text.Encoding = null optionalposition: 1
public Boolean TryGetFrontMatterValue<T>(String key, out T value) #
Returns: Boolean

Gets a typed front matter value by key when the document header is present.

Type Parameters

T

Parameters

key System.String requiredposition: 0
value ``0@ requiredposition: 1
public MarkdownDoc Ul(Action<UnorderedListBuilder> build) #
Returns: MarkdownDoc

Adds an unordered list.

Parameters

build System.Action{OfficeIMO.Markdown.UnorderedListBuilder} requiredposition: 0
public MarkdownDoc Ul<T>(IEnumerable<T> items) #
Returns: MarkdownDoc

Adds an unordered list from a sequence of items using ToString().

Type Parameters

T

Parameters

items System.Collections.Generic.IEnumerable{``0} requiredposition: 0

Properties

public IReadOnlyList<IMarkdownBlock> Blocks { get; } #

All blocks added to the document (excluding front matter).

public FrontMatterBlock DocumentHeader { get; } #

Document-level front matter/header block when present.

public IReadOnlyList<Entry> FrontMatterEntries { get; } #

Structured document front matter entries when present.

public IReadOnlyList<IMarkdownBlock> TopLevelBlocks { get; } #

All top-level document blocks in order, including front matter when present.

public Boolean HasDocumentHeader { get; } #

Whether the document has front matter.