lib/plurimath/latex/parse.rb in plurimath-0.4.1 vs lib/plurimath/latex/parse.rb in plurimath-0.4.2

- old
+ new

@@ -93,15 +93,22 @@ (str("\\\\").as("\\\\") >> match(/\s/).repeat) | str("\\ ").as(:space) end rule(:intermediate_exp) do - (lparen.as(:left_paren) >> expression.maybe.as(:expression) >> rparen.as(:right_paren)).as(:intermediate_exp) | + (lparen.as(:left_paren) >> expression.maybe.as(:expression) >> (rparen | (str("\\") >> (match("\s") >> str(".")).maybe).as(:rparen)).maybe.as(:right_paren)).as(:intermediate_exp) | (str("{") >> expression.maybe.as(:expression) >> str("}")) | symbol_text_or_integer end + rule(:parsing_text_values) do + (str("{") >> parsing_text_values >> str("}")) >> parsing_text_values | + (str("{") >> parsing_text_values >> str("}")) | + (match("[^}]") >> parsing_text_values) | + match("[^}]").repeat + end + rule(:power_base) do (subscript >> power >> intermediate_exp.as(:supscript)).as(:power_base) | (supscript >> base >> intermediate_exp.as(:subscript)).as(:power_base) | supscript.as(:power) | subscript.as(:base) @@ -128,11 +135,12 @@ (slash >> str("substack").as(:substack) >> intermediate_exp) | (begining >> array_args >> expression.as(:table_data) >> ending).as(:environment) | (begining >> expression.as(:table_data) >> ending).as(:environment) | (slash >> environment >> intermediate_exp).as(:table_data) | power_base | - intermediate_exp + intermediate_exp | + intermediate_exp.as(:intermediate_exp) >> rparen.as(:symbol) end rule(:left_right) do ( str("\\left").as(:left) >> (left_parens | str(".").maybe) >> @@ -202,10 +210,10 @@ (slashed_value(first_value, :underover) >> intermediate_exp.maybe.as(:first_value) >> dynamic_power_base) | (slashed_value(first_value, :underover)) when :binary (slashed_value(first_value, :binary) >> intermediate_exp.as(:first_value) >> intermediate_exp.as(:second_value)).as(:binary) when :text - (slashed_value(first_value, :text) >> (str("{") >> match("[^}]").repeat.as(:first_value) >> str("}"))) + (slashed_value(first_value, :text) >> (str("{") >> parsing_text_values.as(:first_value) >> str("}"))) when :ternary (slashed_value(first_value, :ternary_functions) >> dynamic_power_base >> sequence.as(:third_value).maybe).as(:ternary_class) | slashed_value(first_value, :ternary) end end