1use crate::parser::core::{CoreRule, Root};
2use crate::{MarkdownIt, Node};
3
4pub fn add(md: &mut MarkdownIt) {
5 md.add_rule::<BlockParserRule>()
6 .before_all();
7}
8
9pub struct BlockParserRule;
10impl CoreRule for BlockParserRule {
11 fn run(root: &mut Node, md: &MarkdownIt) {
12 let mut node = std::mem::take(root);
13 let data = node.cast_mut::<Root>().unwrap();
14 let source = std::mem::take(&mut data.content);
15 let mut ext = std::mem::take(&mut data.ext);
16
17 node = md.block.parse(source.as_str(), node, md, &mut ext);
18 let data = node.cast_mut::<Root>().unwrap();
19 data.content = source;
20 data.ext = ext;
21 *root = node;
22 }
23}