pub trait MarkdownWalker {
Show 43 methods
// Provided methods
fn from_markdown(markdown: impl AsRef<str>) -> Result<Self>
where Self: Default { ... }
fn visit<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_block_quote<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_code<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
code: &NodeCode,
) -> Result<()> { ... }
fn visit_code_block<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
code_block: &NodeCodeBlock,
) -> Result<()> { ... }
fn visit_description_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
description_item: &NodeDescriptionItem,
) -> Result<()> { ... }
fn visit_description_list<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_description_term<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_description_details<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_document<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_escaped<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_escaped_tag<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
tag: &String,
) -> Result<()> { ... }
fn visit_emph<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_footnote_definition<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
footnote_definition: &NodeFootnoteDefinition,
) -> Result<()> { ... }
fn visit_footnote_reference<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
footnote_reference: &NodeFootnoteReference,
) -> Result<()> { ... }
fn visit_front_matter<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
frontmatter: &String,
) -> Result<()> { ... }
fn visit_heading<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
heading: &NodeHeading,
) -> Result<()> { ... }
fn visit_html_block<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
html_block: &NodeHtmlBlock,
) -> Result<()> { ... }
fn visit_html_inline<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
inline: &String,
) -> Result<()> { ... }
fn visit_image<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
link: &NodeLink,
) -> Result<()> { ... }
fn visit_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
list: &NodeList,
) -> Result<()> { ... }
fn visit_link<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
link: &NodeLink,
) -> Result<()> { ... }
fn visit_line_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_list<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
list: &NodeList,
) -> Result<()> { ... }
fn visit_math<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
math: &NodeMath,
) -> Result<()> { ... }
fn visit_multiline_block_quote<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
multiline_block_quote: &NodeMultilineBlockQuote,
) -> Result<()> { ... }
fn visit_paragraph<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_raw<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
raw: &String,
) -> Result<()> { ... }
fn visit_short_code<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
short_code: &NodeShortCode,
) -> Result<()> { ... }
fn visit_soft_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_spoilered_text<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_strong<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_strikethrough<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_subscript<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_superscript<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_table<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
table: &NodeTable,
) -> Result<()> { ... }
fn visit_table_cell<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_table_row<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
table_row: &bool,
) -> Result<()> { ... }
fn visit_task_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
task_item: &Option<char>,
) -> Result<()> { ... }
fn visit_text<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
text: &String,
) -> Result<()> { ... }
fn visit_thematic_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_underline<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()> { ... }
fn visit_wiki_link<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
wiki_link: &NodeWikiLink,
) -> Result<()> { ... }
}Expand description
The main trait we export from this crate. This gives you the ability to build your own types from a given markdown AST made by the Comrak crate. The trait has a default implementation for every one of its methods, so you can choose to override only the methods you need for your type.
§From Markdown
Any type which implements Default can be created from a markdown string. The default
trait lets the walker initialize the type with default values and then parse given markdown
string and return the type.
See the from_markdown method for more information.
§Visit
The visit method is the main method you need to implement to build your type from the
markdown AST directly. This method leaves a bit more work on the table for you, but you
can leverage it for a more performant traversal, since you’ll only be marshaling the AST
once.
Provided Methods§
Sourcefn visit<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a node in the markdown AST. This method recursively traverses the AST and calls
the appropriate method for each node type. This method powers from_markdown, but
works on the direct AST instead of a markdown string.
Sourcefn visit_block_quote<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_block_quote<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a block quote node.
Sourcefn visit_code<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
code: &NodeCode,
) -> Result<()>
fn visit_code<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, code: &NodeCode, ) -> Result<()>
Visit a code node, which is a code span that contains a NodeCode ref.
Sourcefn visit_code_block<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
code_block: &NodeCodeBlock,
) -> Result<()>
fn visit_code_block<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, code_block: &NodeCodeBlock, ) -> Result<()>
Visit a code block node, which contains a NodeCodeBlock ref.
Sourcefn visit_description_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
description_item: &NodeDescriptionItem,
) -> Result<()>
fn visit_description_item<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, description_item: &NodeDescriptionItem, ) -> Result<()>
Visit a description item node, which contains a NodeDescriptionItem ref.
Sourcefn visit_description_list<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_description_list<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a description list node.
Sourcefn visit_description_term<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_description_term<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a description term node.
Sourcefn visit_description_details<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_description_details<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a description details node.
Sourcefn visit_document<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_document<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a document node.
Sourcefn visit_escaped<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_escaped<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit an escaped content node.
Sourcefn visit_escaped_tag<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
tag: &String,
) -> Result<()>
fn visit_escaped_tag<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, tag: &String, ) -> Result<()>
Visit an escaped tag node. The tag is a String that contains the escaped tag content.
Sourcefn visit_emph<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_emph<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit an emphasis node.
Sourcefn visit_footnote_definition<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
footnote_definition: &NodeFootnoteDefinition,
) -> Result<()>
fn visit_footnote_definition<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, footnote_definition: &NodeFootnoteDefinition, ) -> Result<()>
Visit a footnote definition node, which contains a NodeFootnoteDefinition ref.
Sourcefn visit_footnote_reference<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
footnote_reference: &NodeFootnoteReference,
) -> Result<()>
fn visit_footnote_reference<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, footnote_reference: &NodeFootnoteReference, ) -> Result<()>
Visit a footnote reference node, which contains a NodeFootnoteReference ref.
Sourcefn visit_front_matter<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
frontmatter: &String,
) -> Result<()>
fn visit_front_matter<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, frontmatter: &String, ) -> Result<()>
Visit a front matter node. The front matter is a String that contains the front matter content.
Sourcefn visit_heading<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
heading: &NodeHeading,
) -> Result<()>
fn visit_heading<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, heading: &NodeHeading, ) -> Result<()>
Visit a heading node, which contains a NodeHeading ref.
Sourcefn visit_html_block<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
html_block: &NodeHtmlBlock,
) -> Result<()>
fn visit_html_block<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, html_block: &NodeHtmlBlock, ) -> Result<()>
Visit an HTML block node, which is a NodeHtmlBlock ref.
Sourcefn visit_html_inline<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
inline: &String,
) -> Result<()>
fn visit_html_inline<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, inline: &String, ) -> Result<()>
Visit an HTML inline node. The inline is a String that contains the HTML inline content.
Sourcefn visit_image<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
link: &NodeLink,
) -> Result<()>
fn visit_image<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, link: &NodeLink, ) -> Result<()>
Visit an image node, which contains a NodeLink ref for the image link.
Sourcefn visit_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
list: &NodeList,
) -> Result<()>
fn visit_item<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, list: &NodeList, ) -> Result<()>
Visit an item node, which contains a NodeList ref describing the container list.
Sourcefn visit_link<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
link: &NodeLink,
) -> Result<()>
fn visit_link<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, link: &NodeLink, ) -> Result<()>
Visit a link node, which contains a NodeLink ref for the link.
Sourcefn visit_line_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_line_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a line break node.
Sourcefn visit_list<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
list: &NodeList,
) -> Result<()>
fn visit_list<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, list: &NodeList, ) -> Result<()>
Visit a list node, which contains a NodeList ref describing the list.
Sourcefn visit_math<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
math: &NodeMath,
) -> Result<()>
fn visit_math<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, math: &NodeMath, ) -> Result<()>
Visit a math node, which contains a NodeMath ref.
Sourcefn visit_multiline_block_quote<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
multiline_block_quote: &NodeMultilineBlockQuote,
) -> Result<()>
fn visit_multiline_block_quote<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, multiline_block_quote: &NodeMultilineBlockQuote, ) -> Result<()>
Visit a multiline block quote node, which contains a NodeMultilineBlockQuote ref.
Sourcefn visit_paragraph<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_paragraph<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a paragraph node.
Sourcefn visit_raw<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
raw: &String,
) -> Result<()>
fn visit_raw<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, raw: &String, ) -> Result<()>
Visit a raw node. The raw is a String that contains the raw content.
Sourcefn visit_short_code<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
short_code: &NodeShortCode,
) -> Result<()>
fn visit_short_code<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, short_code: &NodeShortCode, ) -> Result<()>
Visit a short code node, which contains a NodeShortCode ref.
Sourcefn visit_soft_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_soft_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a soft break node.
Sourcefn visit_spoilered_text<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_spoilered_text<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a spoilered text node.
Sourcefn visit_strong<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_strong<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a strong node.
Sourcefn visit_strikethrough<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_strikethrough<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a strikethrough node.
Sourcefn visit_subscript<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_subscript<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a subscript node.
Sourcefn visit_superscript<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_superscript<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a superscript node.
Sourcefn visit_table<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
table: &NodeTable,
) -> Result<()>
fn visit_table<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, table: &NodeTable, ) -> Result<()>
Visit a table node, which contains a NodeTable ref.
Sourcefn visit_table_cell<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_table_cell<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a table cell node.
Sourcefn visit_table_row<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
table_row: &bool,
) -> Result<()>
fn visit_table_row<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, table_row: &bool, ) -> Result<()>
Visit a table row node.
Sourcefn visit_task_item<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
task_item: &Option<char>,
) -> Result<()>
fn visit_task_item<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, task_item: &Option<char>, ) -> Result<()>
Visit a task item node.
Sourcefn visit_text<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
text: &String,
) -> Result<()>
fn visit_text<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, text: &String, ) -> Result<()>
Visit a text node. The text is a String that contains the text content.
Sourcefn visit_thematic_break<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_thematic_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit a thematic break node.
Sourcefn visit_underline<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
) -> Result<()>
fn visit_underline<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>
Visit an underline node.
Sourcefn visit_wiki_link<'arena>(
&mut self,
node: &'arena Node<'arena, RefCell<Ast>>,
wiki_link: &NodeWikiLink,
) -> Result<()>
fn visit_wiki_link<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, wiki_link: &NodeWikiLink, ) -> Result<()>
Visit a wiki link node, which contains a NodeWikiLink ref.