pub enum Container<'s> {
Show 32 variants
Blockquote,
List {
kind: ListKind,
tight: bool,
},
ListItem,
TaskListItem {
checked: bool,
},
DescriptionList,
DescriptionDetails,
Footnote {
label: Cow<'s, str>,
},
Table,
TableRow {
head: bool,
},
Section {
id: Cow<'s, str>,
},
Div {
class: Cow<'s, str>,
},
Paragraph,
Heading {
level: u16,
has_section: bool,
id: Cow<'s, str>,
},
TableCell {
alignment: Alignment,
head: bool,
},
Caption,
DescriptionTerm,
LinkDefinition {
label: Cow<'s, str>,
},
RawBlock {
format: Cow<'s, str>,
},
CodeBlock {
language: Cow<'s, str>,
},
Span,
Link(Cow<'s, str>, LinkType),
Image(Cow<'s, str>, SpanLinkType),
Verbatim,
Math {
display: bool,
},
RawInline {
format: Cow<'s, str>,
},
Subscript,
Superscript,
Insert,
Delete,
Strong,
Emphasis,
Mark,
}Expand description
A container that may contain other elements.
There are three types of containers:
- inline, may only contain inline elements,
- block leaf, may only contain inline elements,
- block container, may contain any block-level elements.
Variants§
Blockquote
A blockquote element.
§Examples
let src = concat!(
"> a\n",
"> b\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Blockquote, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("a".into()),
Event::Softbreak,
Event::Str("b".into()),
Event::End(Container::Paragraph),
Event::End(Container::Blockquote),
],
);
let html = concat!(
"<blockquote>\n",
"<p>a\n",
"b</p>\n",
"</blockquote>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);List
A list.
§Examples
let src = concat!(
"- a\n",
"\n",
"- b\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::List {
kind: ListKind::Unordered(ListBulletType::Dash),
tight: false,
},
Attributes::new(),
),
Event::Start(Container::ListItem, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("a".into()),
Event::End(Container::Paragraph),
Event::Blankline,
Event::End(Container::ListItem),
Event::Start(Container::ListItem, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("b".into()),
Event::End(Container::Paragraph),
Event::End(Container::ListItem),
Event::End(Container::List {
kind: ListKind::Unordered(ListBulletType::Dash),
tight: false
}),
],
);
let html = concat!(
"<ul>\n",
"<li>\n",
"<p>a</p>\n",
"</li>\n",
"<li>\n",
"<p>b</p>\n",
"</li>\n",
"</ul>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);ListItem
An item of a list
§Examples
let src = "- a";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::List {
kind: ListKind::Unordered(ListBulletType::Dash),
tight: true,
},
Attributes::new(),
),
Event::Start(Container::ListItem, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("a".into()),
Event::End(Container::Paragraph),
Event::End(Container::ListItem),
Event::End(Container::List {
kind: ListKind::Unordered(ListBulletType::Dash),
tight: true,
}),
],
);
let html = concat!(
"<ul>\n",
"<li>\n",
"a\n",
"</li>\n",
"</ul>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);TaskListItem
An item of a task list, either checked or unchecked.
§Examples
let src = "- [x] a";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::List {
kind: ListKind::Task(ListBulletType::Dash),
tight: true
},
Attributes::new(),
),
Event::Start(
Container::TaskListItem { checked: true },
Attributes::new(),
),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("a".into()),
Event::End(Container::Paragraph),
Event::End(Container::TaskListItem { checked: true }),
Event::End(Container::List {
kind: ListKind::Task(ListBulletType::Dash),
tight: true,
}),
],
);
let html = concat!(
"<ul class=\"task-list\">\n",
"<li>\n",
"<input disabled=\"\" type=\"checkbox\" checked=\"\"/>\n",
"a\n",
"</li>\n",
"</ul>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);DescriptionList
A description list.
§Examples
let src = concat!(
": orange\n",
"\n",
" citrus fruit\n",
": apple\n",
"\n",
" malus fruit\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::DescriptionList, Attributes::new()),
Event::Start(Container::DescriptionTerm, Attributes::new()),
Event::Str("orange".into()),
Event::End(Container::DescriptionTerm),
Event::Blankline,
Event::Start(Container::DescriptionDetails, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("citrus fruit".into()),
Event::End(Container::Paragraph),
Event::End(Container::DescriptionDetails),
Event::Start(Container::DescriptionTerm, Attributes::new()),
Event::Str("apple".into()),
Event::End(Container::DescriptionTerm),
Event::Blankline,
Event::Start(Container::DescriptionDetails, Attributes::new()),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("malus fruit".into()),
Event::End(Container::Paragraph),
Event::End(Container::DescriptionDetails),
Event::End(Container::DescriptionList),
],
);
let html = concat!(
"<dl>\n",
"<dt>orange</dt>\n",
"<dd>\n",
"<p>citrus fruit</p>\n",
"</dd>\n",
"<dt>apple</dt>\n",
"<dd>\n",
"<p>malus fruit</p>\n",
"</dd>\n",
"</dl>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);DescriptionDetails
Details describing a term within a description list.
Footnote
A footnote definition.
§Examples
let src = concat!(
"txt[^nb]\n",
"\n",
"[^nb]: actually..\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("txt".into()),
Event::FootnoteReference("nb".into()),
Event::End(Container::Paragraph),
Event::Blankline,
Event::Start(
Container::Footnote { label: "nb".into() },
Attributes::new(),
),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("actually..".into()),
Event::End(Container::Paragraph),
Event::End(Container::Footnote { label: "nb".into() }),
],
);
let html = concat!(
"<p>txt<a id=\"fnref1\" href=\"#fn1\" role=\"doc-noteref\"><sup>1</sup></a></p>\n",
"<section role=\"doc-endnotes\">\n",
"<hr>\n",
"<ol>\n",
"<li id=\"fn1\">\n",
"<p>actually..<a href=\"#fnref1\" role=\"doc-backlink\">↩\u{fe0e}</a></p>\n",
"</li>\n",
"</ol>\n",
"</section>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Table
A table element.
§Examples
let src = concat!(
"| a | b |\n",
"|---|--:|\n",
"| 1 | 2 |\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Table, Attributes::new()),
Event::Start(
Container::TableRow { head: true },
Attributes::new(),
),
Event::Start(
Container::TableCell {
alignment: Alignment::Unspecified,
head: true
},
Attributes::new(),
),
Event::Str("a".into()),
Event::End(Container::TableCell {
alignment: Alignment::Unspecified,
head: true,
}),
Event::Start(
Container::TableCell {
alignment: Alignment::Right,
head: true,
},
Attributes::new(),
),
Event::Str("b".into()),
Event::End(Container::TableCell {
alignment: Alignment::Right,
head: true,
}),
Event::End(Container::TableRow { head: true } ),
Event::Start(
Container::TableRow { head: false },
Attributes::new(),
),
Event::Start(
Container::TableCell {
alignment: Alignment::Unspecified,
head: false
},
Attributes::new(),
),
Event::Str("1".into()),
Event::End(Container::TableCell {
alignment: Alignment::Unspecified,
head: false,
}),
Event::Start(
Container::TableCell {
alignment: Alignment::Right,
head: false,
},
Attributes::new(),
),
Event::Str("2".into()),
Event::End(Container::TableCell {
alignment: Alignment::Right,
head: false,
}),
Event::End(Container::TableRow { head: false } ),
Event::End(Container::Table),
],
);
let html = concat!(
"<table>\n",
"<tr>\n",
"<th>a</th>\n",
"<th style=\"text-align: right;\">b</th>\n",
"</tr>\n",
"<tr>\n",
"<td>1</td>\n",
"<td style=\"text-align: right;\">2</td>\n",
"</tr>\n",
"</table>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);TableRow
A row element of a table.
Section
A section belonging to a top level heading.
§Examples
let src = concat!(
"# outer\n",
"\n",
"## inner\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::Section { id: "outer".into() },
Attributes::new(),
),
Event::Start(
Container::Heading {
level: 1,
has_section: true,
id: "outer".into(),
},
Attributes::new(),
),
Event::Str("outer".into()),
Event::End(Container::Heading {
level: 1,
has_section: true,
id: "outer".into(),
}),
Event::Blankline,
Event::Start(
Container::Section { id: "inner".into() },
Attributes::new(),
),
Event::Start(
Container::Heading {
level: 2,
has_section: true,
id: "inner".into(),
},
Attributes::new(),
),
Event::Str("inner".into()),
Event::End(Container::Heading {
level: 2,
has_section: true,
id: "inner".into(),
}),
Event::End(Container::Section { id: "inner".into() }),
Event::End(Container::Section { id: "outer".into() }),
],
);
let html = concat!(
"<section id=\"outer\">\n",
"<h1>outer</h1>\n",
"<section id=\"inner\">\n",
"<h2>inner</h2>\n",
"</section>\n",
"</section>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Div
A block-level divider element.
§Examples
let src = concat!(
"::: note\n",
"this is a note\n",
":::\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::Div { class: "note".into() },
Attributes::new(),
),
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("this is a note".into()),
Event::End(Container::Paragraph),
Event::End(Container::Div { class: "note".into() }),
],
);
let html = concat!(
"<div class=\"note\">\n",
"<p>this is a note</p>\n",
"</div>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Paragraph
A paragraph.
Heading
A heading.
§Examples
let src = "# heading";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::Section { id: "heading".into() },
Attributes::new(),
),
Event::Start(
Container::Heading {
level: 1,
has_section: true,
id: "heading".into(),
},
Attributes::new(),
),
Event::Str("heading".into()),
Event::End(Container::Heading {
level: 1,
has_section: true,
id: "heading".into(),
}),
Event::End(Container::Section { id: "heading".into() }),
],
);
let html = concat!(
"<section id=\"heading\">\n",
"<h1>heading</h1>\n",
"</section>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);TableCell
A cell element of row within a table.
Caption
A caption within a table.
§Examples
let src = concat!(
"|a|\n",
"^ caption\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Table, Attributes::new()),
Event::Start(Container::Caption, Attributes::new()),
Event::Str("caption".into()),
Event::End(Container::Caption),
Event::Start(
Container::TableRow { head: false },
Attributes::new(),
),
Event::Start(
Container::TableCell {
alignment: Alignment::Unspecified,
head: false
},
Attributes::new(),
),
Event::Str("a".into()),
Event::End(Container::TableCell {
alignment: Alignment::Unspecified,
head: false,
}),
Event::End(Container::TableRow { head: false } ),
Event::End(Container::Table),
],
);
let html = concat!(
"<table>\n",
"<caption>caption</caption>\n",
"<tr>\n",
"<td>a</td>\n",
"</tr>\n",
"</table>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);DescriptionTerm
A term within a description list.
LinkDefinition
A link definition.
§Examples
let src = "[label]: url";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::LinkDefinition { label: "label".into() },
Attributes::new(),
),
Event::Str("url".into()),
Event::End(Container::LinkDefinition { label: "label".into() }),
],
);
let html = "\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);RawBlock
A block with raw markup for a specific output format.
§Examples
let src = concat!(
"```=html\n",
"<tag>x</tag>\n",
"```\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::RawBlock { format: "html".into() },
Attributes::new(),
),
Event::Str("<tag>x</tag>".into()),
Event::End(Container::RawBlock { format: "html".into() }),
],
);
let html = "<tag>x</tag>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);CodeBlock
A block with code in a specific language.
§Examples
let src = concat!(
"```html\n",
"<tag>x</tag>\n",
"```\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(
Container::CodeBlock { language: "html".into() },
Attributes::new(),
),
Event::Str("<tag>x</tag>\n".into()),
Event::End(Container::CodeBlock { language: "html".into() }),
],
);
let html = concat!(
"<pre><code class=\"language-html\"><tag>x</tag>\n",
"</code></pre>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Span
An inline divider element.
§Examples
Can be used to add attributes:
let src = concat!(
"word{#a}\n",
"[two words]{#b}\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::Span,
[(AttributeKind::Id, "a".into())].into_iter().collect(),
),
Event::Str("word".into()),
Event::End(Container::Span),
Event::Softbreak,
Event::Start(
Container::Span,
[(AttributeKind::Id, "b".into())].into_iter().collect(),
),
Event::Str("two words".into()),
Event::End(Container::Span),
Event::End(Container::Paragraph),
],
);
let html = concat!(
"<p><span id=\"a\">word</span>\n",
"<span id=\"b\">two words</span></p>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Link(Cow<'s, str>, LinkType)
An inline link, the first field is either a destination URL or an unresolved tag.
§Examples
URLs or email addresses can be enclosed with angled brackets to create a hyperlink:
let src = concat!(
"<https://example.com>\n",
"<me@example.com>\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::Link(
"https://example.com".into(),
LinkType::AutoLink,
),
Attributes::new(),
),
Event::Str("https://example.com".into()),
Event::End(Container::Link(
"https://example.com".into(),
LinkType::AutoLink,
)),
Event::Softbreak,
Event::Start(
Container::Link(
"me@example.com".into(),
LinkType::Email,
),
Attributes::new(),
),
Event::Str("me@example.com".into()),
Event::End(Container::Link(
"me@example.com".into(),
LinkType::Email,
)),
Event::End(Container::Paragraph),
],
);
let html = concat!(
"<p><a href=\"https://example.com\">https://example.com</a>\n",
"<a href=\"mailto:me@example.com\">me@example.com</a></p>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Anchor text and the URL can be specified inline:
let src = "[anchor](url)\n";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::Link(
"url".into(),
LinkType::Span(SpanLinkType::Inline),
),
Attributes::new(),
),
Event::Str("anchor".into()),
Event::End(
Container::Link("url".into(),
LinkType::Span(SpanLinkType::Inline)),
),
Event::End(Container::Paragraph),
],
);
let html = "<p><a href=\"url\">anchor</a></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Alternatively, the URL can be retrieved from a link definition using hard brackets, if it exists:
let src = concat!(
"[a][label]\n",
"[b][non-existent]\n",
"\n",
"[label]: url\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::Link(
"url".into(),
LinkType::Span(SpanLinkType::Reference),
),
Attributes::new(),
),
Event::Str("a".into()),
Event::End(
Container::Link("url".into(),
LinkType::Span(SpanLinkType::Reference)),
),
Event::Softbreak,
Event::Start(
Container::Link(
"non-existent".into(),
LinkType::Span(SpanLinkType::Unresolved),
),
Attributes::new(),
),
Event::Str("b".into()),
Event::End(
Container::Link("non-existent".into(),
LinkType::Span(SpanLinkType::Unresolved)),
),
Event::End(Container::Paragraph),
Event::Blankline,
Event::Start(
Container::LinkDefinition { label: "label".into() },
Attributes::new(),
),
Event::Str("url".into()),
Event::End(Container::LinkDefinition { label: "label".into() }),
],
);
let html = concat!(
"<p><a href=\"url\">a</a>\n",
"<a>b</a></p>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);Image(Cow<'s, str>, SpanLinkType)
An inline image, the first field is either a destination URL or an unresolved tag.
§Examples
Inner Str objects compose the alternative text:
let src = "";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::Image("img.png".into(), SpanLinkType::Inline),
Attributes::new(),
),
Event::Str("alt text".into()),
Event::End(
Container::Image("img.png".into(), SpanLinkType::Inline),
),
Event::End(Container::Paragraph),
],
);
let html = "<p><img alt=\"alt text\" src=\"img.png\"></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Verbatim
An inline verbatim string.
§Examples
let src = "inline `verbatim`";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("inline ".into()),
Event::Start(Container::Verbatim, Attributes::new()),
Event::Str("verbatim".into()),
Event::End(Container::Verbatim),
Event::End(Container::Paragraph),
],
);
let html = "<p>inline <code>verbatim</code></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Math
An inline or display math element.
§Examples
let src = concat!(
"inline $`a\\cdot{}b` or\n",
"display $$`\\frac{a}{b}`\n",
);
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Str("inline ".into()),
Event::Start(
Container::Math { display: false },
Attributes::new(),
),
Event::Str(r"a\cdot{}b".into()),
Event::End(Container::Math { display: false }),
Event::Str(" or".into()),
Event::Softbreak,
Event::Str("display ".into()),
Event::Start(
Container::Math { display: true },
Attributes::new(),
),
Event::Str(r"\frac{a}{b}".into()),
Event::End(Container::Math { display: true }),
Event::End(Container::Paragraph),
],
);
let html = concat!(
"<p>inline <span class=\"math inline\">\\(a\\cdot{}b\\)</span> or\n",
"display <span class=\"math display\">\\[\\frac{a}{b}\\]</span></p>\n",
);
assert_eq!(&html::render_to_string(events.into_iter()), html);RawInline
Inline raw markup for a specific output format.
§Examples
let src = "`<tag>a</tag>`{=html}";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(
Container::RawInline { format: "html".into() }, Attributes::new(),
),
Event::Str("<tag>a</tag>".into()),
Event::End(Container::RawInline { format: "html".into() }),
Event::End(Container::Paragraph),
],
);
let html = "<p><tag>a</tag></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Subscript
A subscripted element.
§Examples
let src = "~SUB~";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Subscript, Attributes::new()),
Event::Str("SUB".into()),
Event::End(Container::Subscript),
Event::End(Container::Paragraph),
],
);
let html = "<p><sub>SUB</sub></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Superscript
A superscripted element.
§Examples
let src = "^SUP^";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Superscript, Attributes::new()),
Event::Str("SUP".into()),
Event::End(Container::Superscript),
Event::End(Container::Paragraph),
],
);
let html = "<p><sup>SUP</sup></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Insert
An inserted inline element.
§Examples
let src = "{+INS+}";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Insert, Attributes::new()),
Event::Str("INS".into()),
Event::End(Container::Insert),
Event::End(Container::Paragraph),
],
);
let html = "<p><ins>INS</ins></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Delete
A deleted inline element.
§Examples
let src = "{-DEL-}";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Delete, Attributes::new()),
Event::Str("DEL".into()),
Event::End(Container::Delete),
Event::End(Container::Paragraph),
],
);
let html = "<p><del>DEL</del></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Strong
An inline element emphasized with a bold typeface.
§Examples
let src = "*STRONG*";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Strong, Attributes::new()),
Event::Str("STRONG".into()),
Event::End(Container::Strong),
Event::End(Container::Paragraph),
],
);
let html = "<p><strong>STRONG</strong></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Emphasis
An emphasized inline element.
§Examples
let src = "_EM_";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Emphasis, Attributes::new()),
Event::Str("EM".into()),
Event::End(Container::Emphasis),
Event::End(Container::Paragraph),
],
);
let html = "<p><em>EM</em></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);Mark
A highlighted inline element.
§Examples
let src = "{=MARK=}";
let events: Vec<_> = Parser::new(src).collect();
assert_eq!(
&events,
&[
Event::Start(Container::Paragraph, Attributes::new()),
Event::Start(Container::Mark, Attributes::new()),
Event::Str("MARK".into()),
Event::End(Container::Mark),
Event::End(Container::Paragraph),
],
);
let html = "<p><mark>MARK</mark></p>\n";
assert_eq!(&html::render_to_string(events.into_iter()), html);