MarkdownWalker

Trait MarkdownWalker 

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

Source

fn from_markdown(markdown: impl AsRef<str>) -> Result<Self>
where Self: Default,

Create a new instance of the type from a markdown string. This method is only available for types that implement the Default trait. See the visit method for the lower level API counterpart.

Source

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.

Source

fn visit_block_quote<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a block quote node.

Source

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.

Source

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.

Source

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.

Source

fn visit_description_list<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a description list node.

Source

fn visit_description_term<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a description term node.

Source

fn visit_description_details<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a description details node.

Source

fn visit_document<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a document node.

Source

fn visit_escaped<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit an escaped content node.

Source

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.

Source

fn visit_emph<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit an emphasis node.

Source

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.

Source

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.

Source

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.

Source

fn visit_heading<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, heading: &NodeHeading, ) -> Result<()>

Visit a heading node, which contains a NodeHeading ref.

Source

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.

Source

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.

Source

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.

Source

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.

Visit a link node, which contains a NodeLink ref for the link.

Source

fn visit_line_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a line break node.

Source

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.

Source

fn visit_math<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, math: &NodeMath, ) -> Result<()>

Visit a math node, which contains a NodeMath ref.

Source

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.

Source

fn visit_paragraph<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a paragraph node.

Source

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.

Source

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.

Source

fn visit_soft_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a soft break node.

Source

fn visit_spoilered_text<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a spoilered text node.

Source

fn visit_strong<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a strong node.

Source

fn visit_strikethrough<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a strikethrough node.

Source

fn visit_subscript<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a subscript node.

Source

fn visit_superscript<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a superscript node.

Source

fn visit_table<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, table: &NodeTable, ) -> Result<()>

Visit a table node, which contains a NodeTable ref.

Source

fn visit_table_cell<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a table cell node.

Source

fn visit_table_row<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, table_row: &bool, ) -> Result<()>

Visit a table row node.

Source

fn visit_task_item<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, task_item: &Option<char>, ) -> Result<()>

Visit a task item node.

Source

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.

Source

fn visit_thematic_break<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit a thematic break node.

Source

fn visit_underline<'arena>( &mut self, node: &'arena Node<'arena, RefCell<Ast>>, ) -> Result<()>

Visit an underline node.

Visit a wiki link node, which contains a NodeWikiLink ref.

Implementors§