Fix parsing of function

pull/9/head
trivernis 4 years ago
parent 36e3fa717c
commit f3bd761d3d

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

@ -311,22 +311,26 @@ mod tests {
#[test] #[test]
fn it_parses_vectors() { fn it_parses_vectors() {
assert_eq!( assert_eq!(
parse("((1), (2))".to_string()), parse("((1), (2)) - f".to_string()),
Expression { Expression {
children: vec![Element::Group(Group::Vector(Vector { children: vec![
inner: vec![ Element::Group(Group::Vector(Vector {
vec![Expression { inner: vec![
children: vec![Element::Literal(Literal::Number(Number { vec![Expression {
number: "1".to_string() children: vec![Element::Literal(Literal::Number(Number {
}))] number: "1".to_string()
}], }))]
vec![Expression { }],
children: vec![Element::Literal(Literal::Number(Number { vec![Expression {
number: "2".to_string() children: vec![Element::Literal(Literal::Number(Number {
}))] number: "2".to_string()
}] }))]
] }]
}))] ]
})),
Element::Literal(Literal::Operation(Operation::Minus)),
Element::Literal(Literal::Function(Function::F))
]
} }
); );
assert_eq!( assert_eq!(

@ -101,6 +101,7 @@ impl TreeParser {
Token::Logical(l) => Some(Element::Literal(Literal::Logical(l.clone()))), Token::Logical(l) => Some(Element::Literal(Literal::Logical(l.clone()))),
Token::Relation(r) => Some(Element::Literal(Literal::Relation(r.clone()))), Token::Relation(r) => Some(Element::Literal(Literal::Relation(r.clone()))),
Token::Greek(g) => Some(Element::Literal(Literal::Greek(g.clone()))), Token::Greek(g) => Some(Element::Literal(Literal::Greek(g.clone()))),
Token::Function(f) => Some(Element::Literal(Literal::Function(f.clone()))),
Token::Text(t) => { Token::Text(t) => {
if let Some(literal) = self.parse_text(t) { if let Some(literal) = self.parse_text(t) {
Some(Element::Literal(literal)) Some(Element::Literal(literal))

Loading…
Cancel
Save