OfficeIMO

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

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 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 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>

Type Parameters

TBlock
DescendantsOfType``1() #

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

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

Enumerates all table cells in document order, including header cells 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

Type Parameters

TBlock
FindFirstDescendantOfType``1() #

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

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

Type Parameters

TBlock
FindFirstTopLevelBlockOfType``1() #

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

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 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

Type Parameters

TBlock
HasDescendantOfType``1() #

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

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

Type Parameters

TBlock
HasTopLevelBlockOfType``1() #

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

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
public MarkdownDoc Ol<T>(IEnumerable<T> items, Int32 start = 1) #
Returns: MarkdownDoc

Adds an ordered list.

Type Parameters

T

Parameters

build System.Action{OfficeIMO.Markdown.OrderedListBuilder} requiredposition: 0
Ol``1(System.Collections.Generic.IEnumerable{``0} items, System.Int32 start) #

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

Parameters

items System.Collections.Generic.IEnumerable{``0} required
start System.Int32 required
P 2 overloads
public MarkdownDoc P(Action<ParagraphBuilder> build) #
Returns: MarkdownDoc

Adds a paragraph with plain text.

Parameters

text System.String requiredposition: 0
P(System.Action{OfficeIMO.Markdown.ParagraphBuilder} build) #

Adds a paragraph composed with the paragraph builder.

Parameters

build System.Action{OfficeIMO.Markdown.ParagraphBuilder} required
Quote 2 overloads
public MarkdownDoc Quote(Action<QuoteBuilder> build) #
Returns: MarkdownDoc

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

Parameters

text System.String requiredposition: 0
Quote(System.Action{OfficeIMO.Markdown.QuoteBuilder} build) #

Adds a block quote composed via QuoteBuilder.

Parameters

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

Rewrites the document using the provided rewriter.

Parameters

rewriter OfficeIMO.Markdown.MarkdownRewriter requiredposition: 0
public Void SaveHtml(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 SaveHtmlAsync(String path, HtmlOptions options = 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
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<T>(IEnumerable<T> items, params ValueTuple<String, Func<T, Object>>[] columns) #
Returns: MarkdownDoc

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

Type Parameters

T

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
TableFrom``1(System.Collections.Generic.IEnumerable{``0} items, System.ValueTuple{System.String,System.Func{``0,System.Object}}[] columns) #

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

Parameters

items System.Collections.Generic.IEnumerable{``0} required
columns System.ValueTuple{System.String,System.Func{``0,System.Object}}[] required
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 ToHtml() #
Returns: String

Renders HTML using default options. For backward compatibility, this returns an embeddable HTML fragment (no html/head/body) containing just the rendered content. Use HtmlOptions) for a full page.

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 Task<String> ToHtmlDocumentAsync(HtmlOptions options = null) #
Returns: Task<String>

Asynchronously renders a full HTML document.

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 Task<String> ToHtmlFragmentAsync(HtmlOptions options = null) #
Returns: Task<String>

Asynchronously renders an embeddable HTML fragment.

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>

Type Parameters

TBlock
TopLevelBlocksOfType``1() #

Enumerates top-level document blocks of the requested type.

public Boolean TryGetFrontMatterValue<T>(String key, out T value) #
Returns: Boolean

Type Parameters

T

Parameters

key String requiredposition: 0
value T requiredposition: 1
TryGetFrontMatterValue``1(System.String key, ``0@ value) #

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

Parameters

key System.String required
value ``0@ required
public MarkdownDoc Ul<T>(IEnumerable<T> items) #
Returns: MarkdownDoc

Adds an unordered list.

Type Parameters

T

Parameters

build System.Action{OfficeIMO.Markdown.UnorderedListBuilder} requiredposition: 0
Ul``1(System.Collections.Generic.IEnumerable{``0} items) #

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

Parameters

items System.Collections.Generic.IEnumerable{``0} required

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.