pub struct MarkdownIt {
pub block: BlockParser,
pub inline: InlineParser,
pub link_formatter: Box<dyn LinkFormatter>,
pub ext: MarkdownItExtSet,
pub max_indent: i32,
/* private fields */
}Expand description
Main parser struct, created once and reused for parsing multiple documents.
Fields§
§block: BlockParserBlock-level tokenizer.
inline: InlineParserInline-level tokenizer.
link_formatter: Box<dyn LinkFormatter>Link validator and formatter.
ext: MarkdownItExtSetStorage for custom data used in plugins.
max_indent: i32Maximum allowed indentation for syntax blocks default i32::MAX, indented code blocks will set this to 4
Implementations§
Source§impl MarkdownIt
impl MarkdownIt
Sourcepub fn new() -> Self
pub fn new() -> Self
Examples found in repository?
examples/ferris/main.rs (line 8)
6fn main() {
7 // create markdown parser
8 let md = &mut markdown_it::MarkdownIt::new();
9
10 // add commonmark syntax, you almost always want to do that
11 markdown_it::plugins::cmark::add(md);
12
13 // add custom three rules described above
14 inline_rule::add(md);
15 block_rule::add(md);
16 core_rule::add(md);
17
18 // and now you can use it
19 let html = md.parse(r#"
20(\/) hello world (\/)
21(\/)-------------(\/)
22 "#).render();
23
24 print!("{html}");
25
26 assert_eq!(html.trim(), r#"
27<p><span class="ferris-inline">🦀</span> hello world <span class="ferris-inline">🦀</span></p>
28<div class="ferris-block"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0f/Original_Ferris.svg"></div>
29<footer class="ferris-counter">There are 3 crabs lurking in this document.</footer>
30 "#.trim());
31}Sourcepub fn parse(&self, src: &str) -> Node
pub fn parse(&self, src: &str) -> Node
Examples found in repository?
examples/ferris/main.rs (lines 19-22)
6fn main() {
7 // create markdown parser
8 let md = &mut markdown_it::MarkdownIt::new();
9
10 // add commonmark syntax, you almost always want to do that
11 markdown_it::plugins::cmark::add(md);
12
13 // add custom three rules described above
14 inline_rule::add(md);
15 block_rule::add(md);
16 core_rule::add(md);
17
18 // and now you can use it
19 let html = md.parse(r#"
20(\/) hello world (\/)
21(\/)-------------(\/)
22 "#).render();
23
24 print!("{html}");
25
26 assert_eq!(html.trim(), r#"
27<p><span class="ferris-inline">🦀</span> hello world <span class="ferris-inline">🦀</span></p>
28<div class="ferris-block"><img src="https://upload.wikimedia.org/wikipedia/commons/0/0f/Original_Ferris.svg"></div>
29<footer class="ferris-counter">There are 3 crabs lurking in this document.</footer>
30 "#.trim());
31}Sourcepub fn add_rule<T: CoreRule>(
&mut self,
) -> RuleBuilder<'_, fn(&mut Node, &MarkdownIt)>
pub fn add_rule<T: CoreRule>( &mut self, ) -> RuleBuilder<'_, fn(&mut Node, &MarkdownIt)>
pub fn has_rule<T: CoreRule>(&mut self) -> bool
pub fn remove_rule<T: CoreRule>(&mut self)
Trait Implementations§
Source§impl Debug for MarkdownIt
impl Debug for MarkdownIt
Auto Trait Implementations§
impl !Freeze for MarkdownIt
impl !RefUnwindSafe for MarkdownIt
impl Send for MarkdownIt
impl Sync for MarkdownIt
impl Unpin for MarkdownIt
impl !UnwindSafe for MarkdownIt
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
Mutably borrows from an owned value. Read more
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.