lib/plurimath/html/transform.rb in plurimath-0.8.14 vs lib/plurimath/html/transform.rb in plurimath-0.8.15

- old
+ new

@@ -1,21 +1,23 @@ # frozen_string_literal: true module Plurimath class Html class Transform < Parslet::Transform - rule(text: simple(:text)) { Math::Function::Text.new(text) } - rule(unary: simple(:unary)) { Utility.get_class(unary).new } - rule(symbol: simple(:symbol)) { Math::Symbols::Symbol.new(symbol) } - rule(number: simple(:number)) { Math::Number.new(number) } - + rule(text: simple(:text)) { Math::Function::Text.new(text) } + rule(unary: simple(:unary)) { Utility.get_class(unary).new } + rule(symbol: simple(:symbol)) { Utility.symbols_class(symbol, lang: :html) } + rule(number: simple(:number)) { Math::Number.new(number) } + rule(expression: simple(:exp)) { exp } + + rule(expression: sequence(:exp)) { exp } rule(sequence: simple(:sequence)) { sequence } rule(tr_value: simple(:tr_value)) { Math::Function::Tr.new([tr_value]) } rule(td_value: simple(:td_value)) { Math::Function::Td.new([td_value]) } - rule(sequence: sequence(:sequence)) { Math::Formula.new(sequence) } + rule(sequence: sequence(:sequence)) { sequence } rule(td_value: sequence(:td_value)) { Math::Function::Td.new(td_value) } - + rule(parse_parenthesis: simple(:parse_paren)) { parse_paren } rule(unary_function: simple(:unary_function)) { unary_function } rule(table_value: simple(:table_value)) do Math::Function::Table.new([table_value]) @@ -98,18 +100,18 @@ end rule(symbol: simple(:symbol), expression: simple(:expr)) do [ - Math::Symbols::Symbol.new(symbol), + Utility.symbols_class(symbol, lang: :html), expr, ] end rule(symbol: simple(:symbol), expression: sequence(:expr)) do - [Math::Symbols::Symbol.new(symbol)] + expr + [Utility.symbols_class(symbol, lang: :html)] + expr end rule(number: simple(:number), expression: sequence(:expr)) do [Math::Number.new(number)] + expr @@ -139,11 +141,11 @@ end rule(symbol: simple(:symbol), parse_parenthesis: simple(:parse_paren)) do [ - Math::Symbols::Symbol.new(symbol), + Utility.symbols_class(symbol, lang: :html), parse_paren, ] end rule(sub_sup: simple(:sub_sup), @@ -160,16 +162,16 @@ end rule(sub_sup: simple(:sub_sup), sub_value: sequence(:sub_value)) do if Utility.sub_sup_method?(sub_sup) - sub_sup.parameter_one = Math::Formula.new(sub_value) + sub_sup.parameter_one = Utility.filter_values(sub_value) sub_sup else Math::Function::Base.new( sub_sup, - Math::Formula.new(sub_value), + Utility.filter_values(sub_value), ) end end rule(sub_sup: simple(:sub_sup), @@ -186,16 +188,16 @@ end rule(sub_sup: simple(:sub_sup), sup_value: sequence(:sup_value)) do if Utility.sub_sup_method?(sub_sup) - sub_sup.parameter_two = Math::Formula.new(sup_value) + sub_sup.parameter_two = Utility.filter_values(sup_value) sub_sup else Math::Function::Power.new( sub_sup, - Math::Formula.new(sup_value), + Utility.filter_values(sup_value), ) end end rule(sub_sup: simple(:sub_sup), @@ -217,180 +219,189 @@ rule(sub_sup: simple(:sub_sup), sub_value: simple(:sub_value), sup_value: sequence(:sup_value)) do if Utility.sub_sup_method?(sub_sup) sub_sup.parameter_one = sub_value - sub_sup.parameter_two = Math::Formula.new(sup_value) + sub_sup.parameter_two = Utility.filter_values(sup_value) sub_sup else Math::Function::PowerBase.new( sub_sup, sub_value, - Math::Formula.new(sup_value), + Utility.filter_values(sup_value), ) end end rule(sub_sup: simple(:sub_sup), sub_value: sequence(:sub_value), sup_value: simple(:sup_value)) do if Utility.sub_sup_method?(sub_sup) - sub_sup.parameter_one = Math::Formula.new(sub_value) + sub_sup.parameter_one = Utility.filter_values(sub_value) sub_sup.parameter_two = sup_value sub_sup else Math::Function::PowerBase.new( sub_sup, - Math::Formula.new(sub_value), + Utility.filter_values(sub_value), sup_value, ) end end rule(sub_sup: simple(:sub_sup), sub_value: sequence(:sub_value), sup_value: sequence(:sup_value)) do if Utility.sub_sup_method?(sub_sup) - sub_sup.parameter_one = Math::Formula.new(sub_value) - sub_sup.parameter_two = Math::Formula.new(sup_value) + sub_sup.parameter_one = Utility.filter_values(sub_value) + sub_sup.parameter_two = Utility.filter_values(sup_value) sub_sup else Math::Function::PowerBase.new( sub_sup, - Math::Formula.new(sub_value), - Math::Formula.new(sup_value), + Utility.filter_values(sub_value), + Utility.filter_values(sup_value), ) end end rule(sub_sup: simple(:sub_sup), sup_value: sequence(:sup_value), expression: simple(:expression)) do power = Math::Function::Power.new( sub_sup, - Math::Formula.new(sup_value), + Utility.filter_values(sup_value), ) [power, expression] end rule(lparen: simple(:lparen), text: simple(:text), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Function::Text.new(text), - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), sequence: simple(:sequence), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), sequence, - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), sequence: simple(:sequence), parse_parenthesis: simple(:parse_paren), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), sequence, parse_paren, - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), sequence: sequence(:sequence), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), - Math::Formula.new(sequence), - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(lparen, lang: :html), + Utility.filter_values(sequence), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), number: simple(:number), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Number.new(number), - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), unary_function: simple(:unary_function), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), unary_function, - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(binary: simple(:binary), first_value: simple(:first_value), second_value: simple(:second_value)) do Utility.get_class(binary).new(first_value, second_value) end + rule(first_value: sequence(:first_value), + binary: simple(:binary), + second_value: sequence(:second_value)) do + Utility.get_class(binary).new( + Utility.filter_values(first_value), + Utility.filter_values(second_value), + ) + end + rule(lparen: simple(:lparen), text: simple(:text), expression: sequence(:expression), rparen: simple(:rparen)) do Math::Formula.new( ( [ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Function::Text.new(text), ] + expression - ) << Math::Symbols::Symbol.new(rparen), + ) << Utility.symbols_class(rparen, lang: :html), ) end rule(lparen: simple(:lparen), text: simple(:text), expression: simple(:expression), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Function::Text.new(text), expression, - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), number: simple(:number), expression: simple(:expression), rparen: simple(:rparen)) do Math::Formula.new([ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Number.new(number), expression, - Math::Symbols::Symbol.new(rparen), + Utility.symbols_class(rparen, lang: :html), ]) end rule(lparen: simple(:lparen), number: simple(:number), expression: sequence(:expression), rparen: simple(:rparen)) do Math::Formula.new( ( [ - Math::Symbols::Symbol.new(lparen), + Utility.symbols_class(lparen, lang: :html), Math::Number.new(number), ] + expression - ) << Math::Symbols::Symbol.new(rparen), + ) << Utility.symbols_class(rparen, lang: :html), ) end end end end