From f150af7341600af7d779a153c9455950c0bb2fe9 Mon Sep 17 00:00:00 2001 From: PoiScript Date: Tue, 11 Jun 2024 15:18:58 +0800 Subject: [PATCH] fix: verify use_sub_superscript --- src/lib.rs | 2 +- src/syntax/object.rs | 20 ++++++-------------- src/syntax/subscript_superscript.rs | 6 +++++- 3 files changed, 12 insertions(+), 16 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 208ffbf..c1fd96a 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,7 @@ #![doc = include_str!("../README.md")] pub mod ast; -mod config; +pub mod config; mod entities; pub mod export; mod org; diff --git a/src/syntax/object.rs b/src/syntax/object.rs index 5cc3947..4bacba1 100644 --- a/src/syntax/object.rs +++ b/src/syntax/object.rs @@ -128,16 +128,8 @@ pub fn minimal_object_nodes(input: Input) -> Vec { b'~' if emphasis::verify_pre(pre.s) => code_node(i), b'$' => latex_fragment_node(i), b'\\' => entity_node(i).or_else(|_| latex_fragment_node(i)), - b'^' if !input.c.use_sub_superscript.is_nil() - && subscript_superscript::verify_pre(pre.s) => - { - superscript_node(i) - } - b'_' if !input.c.use_sub_superscript.is_nil() - && subscript_superscript::verify_pre(pre.s) => - { - subscript_node(i) - } + b'^' if subscript_superscript::verify_pre(&pre) => superscript_node(i), + b'_' if subscript_superscript::verify_pre(&pre) => subscript_node(i), _ => Err(nom::Err::Error(())), }, input, @@ -199,8 +191,8 @@ pub fn standard_object_nodes(input: Input) -> Vec { b'$' => latex_fragment_node(i), b'\\' if !pre.s.ends_with('\\') && i.as_bytes()[1] == b'\\' => line_break_node(i), b'\\' => entity_node(i).or_else(|_| latex_fragment_node(i)), - b'^' if subscript_superscript::verify_pre(pre.s) => superscript_node(i), - b'_' if subscript_superscript::verify_pre(pre.s) => subscript_node(i), + b'^' if subscript_superscript::verify_pre(&pre) => superscript_node(i), + b'_' if subscript_superscript::verify_pre(&pre) => subscript_node(i), _ => Err(nom::Err::Error(())), }, input, @@ -224,8 +216,8 @@ pub fn link_description_object_nodes(input: Input) -> Vec { b'~' if emphasis::verify_pre(pre.s) => code_node(i), b'$' => latex_fragment_node(i), b'\\' => entity_node(i).or_else(|_| latex_fragment_node(i)), - b'^' if subscript_superscript::verify_pre(pre.s) => superscript_node(i), - b'_' if subscript_superscript::verify_pre(pre.s) => subscript_node(i), + b'^' if subscript_superscript::verify_pre(&pre) => superscript_node(i), + b'_' if subscript_superscript::verify_pre(&pre) => subscript_node(i), _ => Err(nom::Err::Error(())), }, input, diff --git a/src/syntax/subscript_superscript.rs b/src/syntax/subscript_superscript.rs index ce511a1..831ff22 100644 --- a/src/syntax/subscript_superscript.rs +++ b/src/syntax/subscript_superscript.rs @@ -105,7 +105,11 @@ fn balanced_brackets(input: Input) -> IResult { Err(nom::Err::Error(())) } -pub fn verify_pre(s: &str) -> bool { +pub fn verify_pre(i: &Input) -> bool { + if i.c.use_sub_superscript.is_nil() { + return false; + } + let s = i.s; if s.is_empty() { return false; }