lib/plurimath/latex/transform.rb in plurimath-0.4.1 vs lib/plurimath/latex/transform.rb in plurimath-0.4.2
- old
+ new
@@ -43,17 +43,13 @@
rule(binary: simple(:binary)) do
binary.is_a?(Parslet::Slice) ? Utility.get_class(binary).new : binary
end
rule(symbols: simple(:sym)) do
- if sym.is_a?(Parslet::Slice)
- Math::Symbol.new(
- Constants::UNICODE_SYMBOLS[sym.to_sym] || sym,
- )
- else
- sym
- end
+ Math::Symbol.new(
+ Constants::UNICODE_SYMBOLS[sym.to_sym] || sym,
+ )
end
rule(lparen: simple(:lparen),
rparen: simple(:rparen)) do
[]
@@ -402,10 +398,20 @@
Math::Number.new(number),
supscript,
)
end
+ rule(number: simple(:number),
+ subscript: simple(:subscript),
+ supscript: simple(:supscript)) do
+ Math::Function::PowerBase.new(
+ Math::Number.new(number),
+ subscript,
+ supscript,
+ )
+ end
+
rule(symbols: simple(:sym),
subscript: simple(:subscript)) do
Math::Function::Base.new(
Math::Symbol.new(
Constants::UNICODE_SYMBOLS[sym.to_sym] || sym,
@@ -467,10 +473,51 @@
rule(text: simple(:text),
first_value: simple(:first_value)) do
Math::Function::Text.new(first_value)
end
+ rule(text: simple(:text),
+ first_value: sequence(:first_value)) do
+ Math::Function::Text.new(first_value.join)
+ end
+
+ rule(text: simple(:text),
+ first_value: simple(:first_value),
+ supscript: simple(:supscript),) do
+ Math::Function::Power.new(
+ Math::Function::Text.new(first_value),
+ supscript,
+ )
+ end
+
+ rule(text: simple(:text),
+ first_value: sequence(:first_value),
+ supscript: simple(:supscript),) do
+ Math::Function::Power.new(
+ Math::Function::Text.new(first_value.join),
+ supscript,
+ )
+ end
+
+ rule(text: simple(:text),
+ first_value: sequence(:first_value),
+ subscript: simple(:subscript),) do
+ Math::Function::Base.new(
+ Math::Function::Text.new(first_value.join),
+ subscript,
+ )
+ end
+
+ rule(text: simple(:text),
+ first_value: simple(:first_value),
+ subscript: simple(:subscript),) do
+ Math::Function::Base.new(
+ Math::Function::Text.new(first_value),
+ subscript,
+ )
+ end
+
rule(unary: simple(:unary),
first_value: simple(:first_value)) do
Utility.get_class(
unary == "overline" ? "bar" : unary,
).new(first_value)
@@ -519,10 +566,32 @@
font_style,
subscript,
)
end
+ rule(fonts: simple(:fonts),
+ intermediate_exp: simple(:int_exp),
+ subscript: simple(:subscript),
+ supscript: simple(:supscript)) do
+ font_style = if Utility::FONT_STYLES[fonts.to_sym].nil?
+ Math::Function::FontStyle.new(
+ int_exp,
+ fonts.to_s,
+ )
+ else
+ Utility::FONT_STYLES[fonts.to_sym].new(
+ int_exp,
+ fonts.to_s,
+ )
+ end
+ Math::Function::PowerBase.new(
+ font_style,
+ subscript,
+ supscript,
+ )
+ end
+
rule(root: simple(:root),
first_value: simple(:first_value),
second_value: simple(:second_value)) do
second = second_value.nil? ? Math::Formula.new : second_value
Math::Function::Root.new(
@@ -622,9 +691,26 @@
supscript: simple(:supscript)) do
Utility.get_class(binary).new(
subscript,
supscript,
)
+ end
+
+ rule(binary: simple(:binary),
+ subscript: simple(:subscript),
+ supscript: simple(:supscript)) do
+ if binary.is_a?(Parslet::Slice)
+ Utility.get_class(binary).new(
+ subscript,
+ supscript,
+ )
+ else
+ Math::Function::PowerBase.new(
+ binary,
+ subscript,
+ subscript,
+ )
+ end
end
rule(binary: simple(:binary),
subscript: simple(:subscript)) do
if binary.is_a?(Parslet::Slice)