OfficeIMO

API Reference

Class

MarkdownInputNormalizationOptions

Namespace OfficeIMO.Markdown
Assembly OfficeIMO.Markdown
Modifiers sealed

Options for lightweight markdown text normalization before parsing.

Inheritance

  • Object
  • MarkdownInputNormalizationOptions

Constructors

public MarkdownInputNormalizationOptions() #

Methods

public MarkdownInputNormalizationOptions ApplyPreset(MarkdownInputNormalizationPreset preset) #
Returns: MarkdownInputNormalizationOptions

Enables the named preset on the current options instance. Existing values are overwritten by the preset defaults.

Parameters

preset OfficeIMO.Markdown.MarkdownInputNormalizationPreset requiredposition: 0
Preset to apply.

Returns

The same options instance for chaining.

Properties

public Boolean NormalizeZeroWidthSpacingArtifacts { get; set; } #

When true, removes zero-width spacing artifacts such as U+200B/U+2060/U+FEFF that can break markdown readability. Default: false.

public Boolean NormalizeEmojiWordJoins { get; set; } #

When true, inserts a missing space between common status/emoji markers and following prose (for example, ✅Healthy becomes ✅ Healthy). Default: false.

public Boolean NormalizeCompactNumberedChoiceBoundaries { get; set; } #

When true, inserts missing spacing around compact numbered-choice joins (for example, or2) becomes or 2)). Default: false.

public Boolean NormalizeSentenceCollapsedBullets { get; set; } #

When true, inserts a missing newline before compact bullet markers emitted directly after sentence punctuation (for example, Done.- **Next:** check becomes Done.\n- **Next:** check). Default: false.

public Boolean NormalizeSoftWrappedStrongSpans { get; set; } #

When true, joins short hard-wrapped bold labels (for example, "**Status\nOK**") into a single bold span. Default: false.

public Boolean NormalizeInlineCodeSpanLineBreaks { get; set; } #

When true, compacts inline code spans containing line breaks into a single line. Default: false.

public Boolean NormalizeEscapedInlineCodeSpans { get; set; } #

When true, converts escaped inline code spans (for example, \`code\`) into standard markdown code spans. This helps chat/model outputs that over-escape backticks. Default: false.

public Boolean NormalizeTightStrongBoundaries { get; set; } #

When true, inserts a missing space after a closing strong span when followed by a word character (for example, **Healthy**next becomes **Healthy** next). Default: false.

public Boolean NormalizeTightArrowStrongBoundaries { get; set; } #

When true, normalizes compact arrow-to-strong boundaries (for example, ->**Why it matters:** becomes -> **Why it matters:**). Default: false.

public Boolean NormalizeBrokenStrongArrowLabels { get; set; } #

When true, repairs malformed strong spans that are missing the closing delimiter immediately before an arrow-led strong label (for example, **No current failures -> **Why it matters:** becomes **No current failures** -> **Why it matters:**). Default: false.

public Boolean NormalizeWrappedSignalFlowStrongRuns { get; set; } #

When true, repairs malformed signal-flow bullets where an entire arrow chain was accidentally wrapped in one strong span. Default: false.

public Boolean NormalizeSignalFlowLabelSpacing { get; set; } #

When true, inserts missing spaces after signal-flow labels inside arrow segments (for example, -> **Why it matters:**coverage becomes -> **Why it matters:** coverage, and -> Why it matters:coverage becomes -> Why it matters: coverage). Default: false.

public Boolean NormalizeCollapsedMetricChains { get; set; } #

When true, expands collapsed transcript-style metric chains into real markdown lines and converts legacy bold metric labels into plain labels with bold values. Default: false.

public Boolean NormalizeHostLabelBulletArtifacts { get; set; } #

When true, repairs compact host-label bullets and merges plain continuation lines (for example, -AD1 followed by healthy becomes - AD1 healthy). Default: false.

public Boolean NormalizeTightColonSpacing { get; set; } #

When true, inserts a missing space after a colon in prose labels (for example, Why it matters:missing coverage becomes Why it matters: missing coverage). This is applied by AST-level inline normalization and intentionally skips inline code spans. Default: false.

public Boolean NormalizeHeadingListBoundaries { get; set; } #

When true, inserts a missing newline between an ATX heading and an immediately-following unordered strong-label list marker on the same line (for example, ## Summary- **Item:** value becomes ## Summary\n- **Item:** value). MarkdownReader prefers to apply this via a document transform after parse when the markdown already parsed into a recoverable heading block. Default: false.

public Boolean NormalizeCompactStrongLabelListBoundaries { get; set; } #

When true, inserts a missing newline before compact unordered strong-label list markers that were emitted inline after punctuation or symbol characters (for example, ✅- **FSMO:** ok becomes ✅\n- **FSMO:** ok). MarkdownReader prefers to apply this via a document transform after parse when the markdown already parsed into a recoverable paragraph or simple unordered list-item structure. Default: false.

public Boolean NormalizeCompactHeadingBoundaries { get; set; } #

When true, inserts a missing newline before compact ATX headings emitted directly after prose or symbols on the same line (for example, unexpected### Reason becomes unexpected\n### Reason). MarkdownReader prefers to apply this via a document transform after parse when the markdown already parsed into a recoverable paragraph block. Default: false.

public Boolean NormalizeStandaloneHashHeadingSeparators { get; set; } #

When true, removes stray standalone # separator lines that appear immediately before a real ATX heading. MarkdownReader prefers to apply this via a document transform after parse so hosts can keep the repair in the AST pipeline when the markdown already parses cleanly. Default: false.

public Boolean NormalizeBrokenTwoLineStrongLeadIns { get; set; } #

When true, repairs broken two-line strong lead-ins such as **Result followed by body text** tail. Default: false.

public Boolean NormalizeColonListBoundaries { get; set; } #

When true, inserts a missing newline between a colon and an immediately-following unordered list marker on the same line (for example, Next step:- **Item** becomes Next step:\n- **Item**). MarkdownReader prefers to apply this via a document transform after parse when the markdown already parsed into a recoverable paragraph block. Default: false.

public Boolean NormalizeCompactFenceBodyBoundaries { get; set; } #

When true, inserts a missing newline between a fenced code block language token and inline body content for common compact model-output mistakes (for example, ```json{"x":1} becomes ```json\n{"x":1}, and ```mermaidflowchart LR A-->B becomes ```mermaid\nflowchart LR A-->B). Default: false.

public Boolean NormalizeLooseStrongDelimiters { get; set; } #

When true, trims accidental whitespace immediately inside strong delimiters (for example, ** Healthy** or **Healthy ** become **Healthy**). Default: false.

public Boolean NormalizeOrderedListMarkerSpacing { get; set; } #

When true, inserts a missing space after an ordered list marker when the content starts with emphasis-like characters (for example, 2.**Task** becomes 2. **Task**). Default: false.

public Boolean NormalizeOrderedListParenMarkers { get; set; } #

When true, converts ordered list markers in 1) form to 1. with normalized spacing. Default: false.

public Boolean NormalizeOrderedListCaretArtifacts { get; set; } #

When true, removes stray caret artifacts after ordered list markers (for example, 2.^ **Task** becomes 2. **Task**). Default: false.

public Boolean NormalizeCollapsedOrderedListBoundaries { get; set; } #

When true, inserts missing newlines between adjacent ordered list items that were emitted on one line (for example, ...)2.**Task** becomes ...)\n2.**Task**). Default: false.

public Boolean NormalizeOrderedListStrongDetailClosures { get; set; } #

When true, repairs malformed ordered list items where a bold title is missing its closing strong delimiter before a parenthetical detail section (for example, 1. **Task(detail) becomes 1. **Task** (detail)). Default: false.

public Boolean NormalizeTightParentheticalSpacing { get; set; } #

When true, inserts a missing space before parenthetical phrases adjacent to prose or strong spans (for example, **Task**(detail) becomes **Task** (detail)). Default: false.

public Boolean NormalizeNestedStrongDelimiters { get; set; } #

When true, flattens malformed nested strong delimiters emitted by some model outputs (for example, **from **Service Control Manager**.**). Default: false.

public Boolean NormalizeDanglingTrailingStrongListClosers { get; set; } #

When true, upgrades trailing list-item strong-close artifacts (for example, - Overall health Healthy**** becomes - Overall health **Healthy**). Default: false.

public Boolean NormalizeMetricValueStrongRuns { get; set; } #

When true, repairs malformed strong runs used as metric values (for example, ******healthy**, **✅****Healthy**, or a missing trailing closer). Default: false.