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