fix math detection
All checks were successful
ci/woodpecker/push/publish Pipeline was successful

This commit is contained in:
Mylloon 2023-04-22 03:03:27 +02:00
parent e2e2e28461
commit e75d900935
Signed by: Anri
GPG key ID: A82D63DFF8D1317F

View file

@ -62,6 +62,7 @@ pub fn get_options() -> ComrakOptions {
} }
} }
/// Transform markdown string to File structure
pub fn read(raw_text: &str) -> File { pub fn read(raw_text: &str) -> File {
let arena = Arena::new(); let arena = Arena::new();
@ -76,15 +77,16 @@ pub fn read(raw_text: &str) -> File {
format_html(root, &options, &mut html).unwrap(); format_html(root, &options, &mut html).unwrap();
let mermaid_name = "mermaid"; let mermaid_name = "mermaid";
let html_content = String::from_utf8(html).unwrap();
File { File {
metadata: Metadata { metadata: Metadata {
info: metadata, info: metadata,
mermaid: check_mermaid(root, mermaid_name.to_owned()), mermaid: check_mermaid(root, mermaid_name.to_owned()),
syntax_highlight: check_code(root, &[mermaid_name.to_owned()]), syntax_highlight: check_code(root, &[mermaid_name.to_owned()]),
math: check_math(root), math: check_math(&html_content),
}, },
content: String::from_utf8(html).unwrap(), content: html_content,
} }
} }
@ -112,7 +114,7 @@ pub fn get_metadata<'a>(root: &'a AstNode<'a>) -> FileMetadata {
} }
} }
/// Recursively check whether mermaid diagrams are in the AST /// Check whether mermaid diagrams are in the AST
fn check_mermaid<'a>(root: &'a AstNode<'a>, mermaid_str: String) -> bool { fn check_mermaid<'a>(root: &'a AstNode<'a>, mermaid_str: String) -> bool {
root.children().any(|node| match &node.data.borrow().value { root.children().any(|node| match &node.data.borrow().value {
// Check if code of block define a mermaid diagram // Check if code of block define a mermaid diagram
@ -121,7 +123,7 @@ fn check_mermaid<'a>(root: &'a AstNode<'a>, mermaid_str: String) -> bool {
}) })
} }
/// Recursively check if code is in the AST /// Check if code is in the AST
fn check_code<'a>(root: &'a AstNode<'a>, blacklist: &[String]) -> bool { fn check_code<'a>(root: &'a AstNode<'a>, blacklist: &[String]) -> bool {
root.children().any(|node| match &node.data.borrow().value { root.children().any(|node| match &node.data.borrow().value {
// Detect code in paragraph // Detect code in paragraph
@ -135,7 +137,7 @@ fn check_code<'a>(root: &'a AstNode<'a>, blacklist: &[String]) -> bool {
}) })
} }
/// Check recursively if maths is in the AST /// Check if html can contains maths
fn check_math<'a>(root: &'a AstNode<'a>) -> bool { fn check_math(html: &str) -> bool {
root.children().any(|_node| false) html.contains('$')
} }