summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan-Erik Rediger <janerik@fnordig.de>2020-04-08 10:23:37 +0200
committerJan-Erik Rediger <janerik@fnordig.de>2020-04-08 10:23:37 +0200
commite54a576e319d3411b223528a0eb996819fbd9117 (patch)
tree9ef1be04aa9a63756d3bae19e704f2654822b11a
parentfae9f978b0036e5602687731e4b37efe6c5aeed3 (diff)
Bug fix: Enable the same markdown extensions as mdbook
-rw-r--r--src/lib.rs34
1 files changed, 32 insertions, 2 deletions
diff --git a/src/lib.rs b/src/lib.rs
index c306bbb..212d707 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -1,7 +1,7 @@
use mdbook::book::{Book, BookItem, Chapter};
use mdbook::errors::{Error, Result};
use mdbook::preprocess::{Preprocessor, PreprocessorContext};
-use pulldown_cmark::{Event, Parser, Tag};
+use pulldown_cmark::{Event, Parser, Tag, Options};
use pulldown_cmark_to_cmark::fmt::cmark;
pub struct Mermaid;
@@ -37,7 +37,14 @@ fn add_mermaid(content: &str) -> Result<String> {
let mut buf = String::with_capacity(content.len());
let mut mermaid_content = String::new();
let mut in_mermaid_block = false;
- let events = Parser::new(content).map(|e| {
+
+ let mut opts = Options::empty();
+ opts.insert(Options::ENABLE_TABLES);
+ opts.insert(Options::ENABLE_FOOTNOTES);
+ opts.insert(Options::ENABLE_STRIKETHROUGH);
+ opts.insert(Options::ENABLE_TASKLISTS);
+
+ let events = Parser::new_ext(content, opts).map(|e| {
if let Event::Start(Tag::CodeBlock(code)) = e.clone() {
if &*code == "mermaid" {
in_mermaid_block = true;
@@ -109,4 +116,27 @@ Text"#;
assert_eq!(expected, add_mermaid(content).unwrap());
}
+
+
+ #[test]
+ fn leaves_tables_untouched() {
+ // Regression test.
+ // Previously we forgot to enable the same markdwon extensions as mdbook itself.
+
+ let content = r#"# Heading
+
+| Head 1 | Head 2 |
+|--------|--------|
+| Row 1 | Row 2 |
+"#;
+
+ // Markdown roundtripping removes some insignificant whitespace
+ let expected = r#"# Heading
+
+|Head 1|Head 2|
+|------|------|
+|Row 1|Row 2|"#;
+
+ assert_eq!(expected, add_mermaid(content).unwrap());
+ }
}