Class: Plurimath::Latex::Parse
- Inherits:
-
Parslet::Parser
- Object
- Parslet::Parser
- Plurimath::Latex::Parse
- Defined in:
- lib/plurimath/latex/parse.rb
Instance Method Summary collapse
- #arr_to_expression(array, name) ⇒ Object
- #color_rules ⇒ Object
- #dynamic_power_base ⇒ Object
- #dynamic_rules(expr, name) ⇒ Object
- #hash_to_expression(hash) ⇒ Object
- #slashed_value(first_value, name = nil) ⇒ Object
- #unary_rules(first_value) ⇒ Object
Instance Method Details
#arr_to_expression(array, name) ⇒ Object
189 190 191 192 193 194 195 196 |
# File 'lib/plurimath/latex/parse.rb', line 189 def arr_to_expression(array, name) @@new_hash ||= {} type = array.first.class @@new_hash[name] ||= array.reduce do |expression, expr_string| expression = str(expression).as(name) if expression.is_a?(type) expression | str(expr_string).as(name) end end |
#color_rules ⇒ Object
251 252 253 254 |
# File 'lib/plurimath/latex/parse.rb', line 251 def color_rules (str("{") >> slash >> str("color").as(:binary) >> color.as(:first_value) >> (sequence >> iteration.maybe).as(:second_value).maybe >> str("}")) | (slash >> str("color").as(:binary) >> color.as(:first_value) >> expression.as(:second_value).maybe) end |
#dynamic_power_base ⇒ Object
244 245 246 247 248 249 |
# File 'lib/plurimath/latex/parse.rb', line 244 def dynamic_power_base (base >> intermediate_exp.as(:subscript) >> power >> intermediate_exp.as(:supscript)) | (power >> intermediate_exp.as(:supscript) >> base >> intermediate_exp.as(:subscript)) | (power >> intermediate_exp.as(:supscript)) | (base >> intermediate_exp.as(:subscript)) end |
#dynamic_rules(expr, name) ⇒ Object
205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 |
# File 'lib/plurimath/latex/parse.rb', line 205 def dynamic_rules(expr, name) first_value = str(expr.to_s) case name when :operant (first_value.as(:operant) | (slashed_value(first_value, :symbols))) when :symbols slashed_value(first_value, :symbols) when :unary unary_rules(first_value) when :fonts (slashed_value(first_value, :fonts) >> (binary_functions | intermediate_exp).as(:intermediate_exp)) when :power_base (slashed_value(first_value, :binary) >> dynamic_power_base).as(:power_base) | (slashed_value(first_value, :binary)) when :underover (slashed_value(first_value, :underover) >> dynamic_power_base) | (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("{") >> 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 |
#hash_to_expression(hash) ⇒ Object
198 199 200 201 202 203 |
# File 'lib/plurimath/latex/parse.rb', line 198 def hash_to_expression(hash) @@expression ||= hash.reduce do |expression, (key, value)| expression = dynamic_rules(expression.first, expression.last) if expression.is_a?(Array) expression | dynamic_rules(key, value) end end |
#slashed_value(first_value, name = nil) ⇒ Object
233 234 235 |
# File 'lib/plurimath/latex/parse.rb', line 233 def slashed_value(first_value, name = nil) (slash >> first_value.as(name)) end |
#unary_rules(first_value) ⇒ Object
237 238 239 240 241 242 |
# File 'lib/plurimath/latex/parse.rb', line 237 def unary_rules(first_value) (slashed_value(first_value, :unary_functions) >> dynamic_power_base) | (slashed_value(first_value, :unary) >> left_right.as(:first_value)).as(:unary_functions) | (slashed_value(first_value, :unary) >> intermediate_exp.as(:first_value)).as(:unary_functions) | slashed_value(first_value, :unary) end |