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