lib/plurimath/latex/transform.rb in plurimath-0.3.1.2 vs lib/plurimath/latex/transform.rb in plurimath-0.3.2

- old
+ new

@@ -22,10 +22,12 @@ rule(left_right: simple(:left_right)) { left_right } rule(under_over: simple(:under_over)) { under_over } rule(power_base: simple(:power_base)) { power_base } rule(table_data: simple(:table_data)) { table_data } + rule(intermediate_exp: simple(:int_exp)) { int_exp } + rule(numeric_values: simple(:value)) do Math::Symbol.new(value) end rule(text: simple(:text)) do @@ -70,65 +72,115 @@ supscript, ) end rule(left: simple(:left), - lparen: simple(:lparen), + left_paren: simple(:lparen), expression: sequence(:expr), right: simple(:right), - rparen: simple(:rparen)) do + right_paren: simple(:rparen)) do Math::Formula.new( [ - Math::Function::Left.new(lparen), + Utility.left_right_objects(lparen, "left"), Math::Formula.new(expr), - Math::Function::Right.new(rparen), + Utility.left_right_objects(rparen, "right"), ], ) end rule(left: simple(:left), - lparen: simple(:lparen), + left_paren: simple(:lparen), + expression: sequence(:expr), right: simple(:right)) do Math::Formula.new( [ - Math::Function::Left.new(lparen), + Utility.left_right_objects(lparen, "left"), + Math::Formula.new(expr), Math::Function::Right.new, ], ) end rule(left: simple(:left), - lparen: simple(:lparen), + left_paren: simple(:lparen), + expression: simple(:expr), + right: simple(:right)) do + Math::Formula.new( + [ + Utility.left_right_objects(lparen, "left"), + expr, + Math::Function::Right.new, + ], + ) + end + + rule(left: simple(:left), + left_paren: simple(:lparen), + right: simple(:right)) do + Math::Formula.new( + [ + Utility.left_right_objects(lparen, "left"), + Math::Function::Right.new, + ], + ) + end + + rule(left: simple(:left), + left_paren: simple(:lparen), right: simple(:right), - rparen: simple(:rparen)) do + right_paren: simple(:rparen)) do Math::Formula.new( [ - Math::Function::Left.new(lparen), - Math::Function::Right.new(rparen), + Utility.left_right_objects(lparen, "left"), + Utility.left_right_objects(rparen, "right"), ], ) end rule(left: simple(:left), - lparen: simple(:lparen)) do - Math::Function::Left.new(lparen) + left_paren: simple(:lparen)) do + Utility.left_right_objects(lparen, "left") end rule(left: simple(:left), - lparen: simple(:lparen), + left_paren: simple(:lparen), expression: simple(:expr), right: simple(:right), - rparen: simple(:rparen)) do + right_paren: simple(:rparen)) do Math::Formula.new( [ - Math::Function::Left.new(lparen), + Utility.left_right_objects(lparen, "left"), expr, - Math::Function::Right.new(rparen), + Utility.left_right_objects(rparen, "right"), ], ) end + rule(left: simple(:left), + expression: simple(:expr), + right: simple(:right)) do + Math::Formula.new( + [ + Math::Function::Left.new, + expr, + Math::Function::Right.new, + ], + ) + end + + rule(left: simple(:left), + expression: sequence(:expr), + right: simple(:right)) do + Math::Formula.new( + [ + Math::Function::Left.new, + Math::Formula.new(expr), + Math::Function::Right.new, + ], + ) + end + rule(power: simple(:power), number: simple(:number)) do Math::Function::Power.new( power, Math::Number.new(number), @@ -166,27 +218,27 @@ Utility.filter_values(expr), ) end rule(left: simple(:left), - lparen: simple(:lparen), + left_paren: simple(:lparen), dividend: subtree(:dividend), divisor: subtree(:divisor), right: simple(:right), - rparen: simple(:rparen)) do + right_paren: simple(:rparen)) do Math::Formula.new( [ - Math::Function::Left.new(lparen), + Utility.left_right_objects(lparen, "left"), Math::Function::Over.new( Math::Formula.new( Array(dividend).flatten, ), Math::Formula.new( Array(divisor).flatten, ), ), - Math::Function::Right.new(rparen), + Utility.left_right_objects(rparen, "right"), ], ) end rule(dividend: subtree(:dividend), @@ -331,10 +383,18 @@ ), supscript, ) end + rule(intermediate_exp: simple(:int_exp), + supscript: simple(:supscript)) do + Math::Function::Power.new( + int_exp, + supscript, + ) + end + rule(unicode_symbols: simple(:sym), subscript: simple(:subscript)) do Math::Function::Base.new( Math::Unicode.new(sym), subscript, @@ -447,9 +507,29 @@ rule(lparen: simple(:lparen), expression: sequence(:expr), rparen: simple(:rparen)) do Math::Formula.new(expr) + end + + rule(left_paren: simple(:lparen), + expression: simple(:expr), + right_paren: simple(:rparen)) do + Math::Function::Fenced.new( + lparen, + [expr], + rparen, + ) + end + + rule(left_paren: simple(:lparen), + expression: sequence(:expr), + right_paren: simple(:rparen)) do + Math::Function::Fenced.new( + lparen, + expr, + rparen, + ) end rule(expression: sequence(:expr)) do Math::Formula.new(expr) end