Fix elements being enclosed when not needed (part 2)

pull/9/head
trivernis 4 years ago
parent 7ecfd23495
commit 41c7c14537

@ -2,7 +2,7 @@
name = "asciimath-rs"
description = "AsciiMath parser"
repository = "https://github.com/trivernis/asciimath-rs"
version = "0.5.3"
version = "0.5.4"
authors = ["trivernis <trivernis@protonmail.com>"]
edition = "2018"
readme = "README.md"

@ -18,3 +18,17 @@ pub enum Element {
}
impl Boxed for Element {}
impl Element {
pub fn to_non_enclosed(&self) -> Self {
if let Element::Group(g) = self {
if let Some(ne) = g.to_non_enclosed() {
Element::Group(ne)
} else {
Element::Group(g.clone())
}
} else {
self.clone()
}
}
}

@ -402,12 +402,7 @@ impl TreeParser {
self.step();
self.step();
if let Some(element) = self.parse_element() {
if let Element::Group(g) = &element {
if let Some(ne) = g.to_non_enclosed() {
return Some(Element::Group(ne).boxed());
}
}
Some(element.boxed())
Some(element.to_non_enclosed().boxed())
} else {
None
}
@ -421,12 +416,7 @@ impl TreeParser {
self.step();
self.step();
if let Some(element) = self.parse_element() {
if let Element::Group(g) = &element {
if let Some(ne) = g.to_non_enclosed() {
return Some(Element::Group(ne).boxed());
}
}
Some(element.boxed())
Some(element.to_non_enclosed().boxed())
} else {
None
}
@ -441,8 +431,8 @@ impl TreeParser {
self.step();
self.step();
Some(Pow {
base: previous.clone().boxed(),
exp: self.parse_element().unwrap().boxed(),
base: previous.to_non_enclosed().boxed(),
exp: self.parse_element().unwrap().to_non_enclosed().boxed(),
})
} else {
None
@ -455,8 +445,8 @@ impl TreeParser {
self.step();
self.step();
Some(Sub {
base: previous.clone().boxed(),
lower: self.parse_element().unwrap().boxed(),
base: previous.to_non_enclosed().boxed(),
lower: self.parse_element().unwrap().to_non_enclosed().boxed(),
})
} else {
None
@ -469,8 +459,8 @@ impl TreeParser {
self.step();
self.step();
Some(Frac {
top: previous.clone().boxed(),
bottom: self.parse_element().unwrap().boxed(),
top: previous.to_non_enclosed().boxed(),
bottom: self.parse_element().unwrap().to_non_enclosed().boxed(),
})
} else {
None

Loading…
Cancel
Save