summaryrefslogtreecommitdiff
path: root/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib.rs')
-rw-r--r--src/lib.rs18
1 files changed, 15 insertions, 3 deletions
diff --git a/src/lib.rs b/src/lib.rs
index e75221c..ac00e3b 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -108,9 +108,12 @@ impl MarkdownDocument {
Block::Heading { level, line: Line::from_str(&line) }),
BlockLine::Break => blocks.push(Block::Break),
BlockLine::BlankLine => (),
- BlockLine::Paragraph(line) => match parse_embed(&line) {
- Some(embed) => blocks.push(embed),
- None => blocks.push(Block::Paragraph(Line::from_str(&line))),
+ BlockLine::Paragraph(line) => if let Some(embed) = parse_embed(&line) {
+ blocks.push(embed)
+ } else if let Some(math) = parse_math(&line) {
+ blocks.push(math)
+ } else {
+ blocks.push(Block::Paragraph(Line::from_str(&line)))
}
}
}
@@ -157,3 +160,12 @@ fn parse_embed(line: &str) -> Option<Block> {
return None;
}
+fn parse_math(line: &str) -> Option<Block> {
+ let line = line.trim();
+ if let Some(stripped) = line.strip_prefix("$$") {
+ if let Some(stripped) = stripped.strip_suffix("$$") {
+ return Some(Block::Math(stripped.trim().to_string()))
+ }
+ }
+ return None;
+}