pub struct HtmlConfig {
pub enable_sections: bool,
pub enable_mermaid: bool,
pub section_attrs: HashMap<usize, ParsedAttrs>,
pub block_lines: Vec<BlockLine>,
}Expand description
Configuration for MBR-specific HTML extensions.
This struct controls all custom behavior beyond pulldown-cmark’s standard
HTML output. Use HtmlConfig::mbr_defaults() for standard MBR behavior,
or construct manually for fine-grained control.
Fields§
§enable_sections: boolWrap content in <section> tags, using <hr> as dividers.
When enabled:
- Output starts with
<section>\n - Each top-level
---(Rule) becomes</section>\n<hr />\n<section>\n - A
---nested inside a blockquote, list item, footnote definition, table cell, or definition renders as a plain<hr />: splitting the section there would close it outside its container and eject the remaining content from the quote/list on reparse - Output ends with
</section>\n
enable_mermaid: boolRender ```mermaid code blocks as <pre class="mermaid"> without
the <code> wrapper, allowing mermaid.js to render diagrams directly.
section_attrs: HashMap<usize, ParsedAttrs>Attributes for each section (by 1-based index).
Section 0 is the first section (before any ---), section 1 is after the
first ---, etc. When rendering, attributes are applied to the <section> tag.
Use syntax like --- {#id .class data-attr="value"} in markdown to set attrs.
block_lines: Vec<BlockLine>Source lines for block-level elements, ascending by at.
Empty means the feature is off, which is what every caller that does
not opt in gets: HtmlConfig::default() and HtmlConfig::mbr_defaults
both leave it empty, so the writer’s output is byte-for-byte what it was
before data-mbr-line existed.
When non-empty, the writer emits data-mbr-line="N" on the eight block
tags listed in markdown::is_review_block_start — the single definition
of that set, which the arms here must not drift from — but only on the
events the table actually names. A ReviewLines::TermsOnly table names
only <dt> starts, so every other arm writes nothing.
Implementations§
Source§impl HtmlConfig
impl HtmlConfig
Sourcepub fn mbr_defaults() -> Self
pub fn mbr_defaults() -> Self
Standard MBR configuration with all extensions enabled and no section attrs.
Sourcepub fn mbr_with_section_attrs(
section_attrs: HashMap<usize, ParsedAttrs>,
) -> Self
pub fn mbr_with_section_attrs( section_attrs: HashMap<usize, ParsedAttrs>, ) -> Self
Standard MBR configuration with section attributes.
Sourcepub fn mbr_with_attrs_and_block_lines(
section_attrs: HashMap<usize, ParsedAttrs>,
block_lines: Vec<BlockLine>,
) -> Self
pub fn mbr_with_attrs_and_block_lines( section_attrs: HashMap<usize, ParsedAttrs>, block_lines: Vec<BlockLine>, ) -> Self
Standard MBR configuration with section attributes and data-mbr-line
source lines.
An empty block_lines is exactly HtmlConfig::mbr_with_section_attrs,
so a caller that computed no lines pays nothing and emits nothing.
Trait Implementations§
Source§impl Clone for HtmlConfig
impl Clone for HtmlConfig
Source§impl Debug for HtmlConfig
impl Debug for HtmlConfig
Auto Trait Implementations§
impl Freeze for HtmlConfig
impl RefUnwindSafe for HtmlConfig
impl Send for HtmlConfig
impl Sync for HtmlConfig
impl Unpin for HtmlConfig
impl UnsafeUnpin for HtmlConfig
impl UnwindSafe for HtmlConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
Source§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();Source§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
Source§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
Source§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
Source§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
Source§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
Source§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
Source§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
Source§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
Source§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();Source§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
Source§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
Source§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
Source§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
Source§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
Source§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
Source§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
Source§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
Source§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
Source§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
Source§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling Attribute value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();Source§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
Source§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi Quirk value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();Source§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
Source§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the Condition value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);