This commit is contained in:
parent
f2359be6a3
commit
9b9065eb1c
1 changed files with 41 additions and 7 deletions
|
@ -53,7 +53,7 @@ pub fn get_options() -> ComrakOptions {
|
|||
github_pre_lang: false,
|
||||
full_info_string: true,
|
||||
width: 0, // 0 mean disabled?
|
||||
unsafe_: true,
|
||||
unsafe_: false, // could be true? change by metadata could be good for compatibility
|
||||
escape: false, // may change in the future?
|
||||
list_style: ListStyleType::Dash,
|
||||
sourcepos: false,
|
||||
|
@ -64,11 +64,11 @@ pub fn get_options() -> ComrakOptions {
|
|||
pub fn read(raw_text: &str) -> File {
|
||||
let arena = Arena::new();
|
||||
|
||||
// LaTeX conversion to MathML
|
||||
let text = latex2mathml::replace(raw_text).unwrap_or_default();
|
||||
|
||||
let options = get_options();
|
||||
let root = parse_document(&arena, &text, &options);
|
||||
let root = parse_document(&arena, raw_text, &options);
|
||||
|
||||
// LaTeX conversion to MathML
|
||||
latex_replace(root);
|
||||
|
||||
// Find metadata
|
||||
let metadata = get_metadata(root);
|
||||
|
@ -135,3 +135,37 @@ fn check_code<'a>(root: &'a AstNode<'a>, blacklist: &[String]) -> bool {
|
|||
_ => false,
|
||||
})
|
||||
}
|
||||
|
||||
/// Call the `latex2mathml::replace` function when LaTeX formula can appears
|
||||
/// without breaking things
|
||||
fn latex_replace<'a>(root: &'a AstNode<'a>) {
|
||||
root.children()
|
||||
.for_each(|node| match &mut node.data.borrow_mut().value {
|
||||
// Detect in blocks
|
||||
NodeValue::Paragraph
|
||||
| NodeValue::BlockQuote
|
||||
| NodeValue::TableCell
|
||||
|
||||
// Detect in inlines
|
||||
| NodeValue::Emph
|
||||
| NodeValue::Strong
|
||||
| NodeValue::Strikethrough
|
||||
| NodeValue::Superscript => {
|
||||
latex_replace(node)
|
||||
}
|
||||
|
||||
// Contains text
|
||||
NodeValue::Text(ref mut text) => {
|
||||
*text = latex2mathml::replace(text).unwrap_or(text.to_owned())
|
||||
},
|
||||
NodeValue::Link(ref mut link) | NodeValue::Image(ref mut link) => {
|
||||
let mut clone = link.clone();
|
||||
clone.title = latex2mathml::replace(&link.title).unwrap_or(clone.title);
|
||||
|
||||
*link = clone;
|
||||
},
|
||||
|
||||
// Everything not captured can't contains math
|
||||
_ => (),
|
||||
});
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue