Class: Unitsml::Parse

Inherits:
Parslet::Parser
  • Object
show all
Defined in:
lib/unitsml/parse.rb

Instance Method Summary collapse

Instance Method Details

#arr_to_expression(arr, file_name) ⇒ Object



59
60
61
62
63
64
65
# File 'lib/unitsml/parse.rb', line 59

def arr_to_expression(arr, file_name)
  array = arr&.flatten&.compact&.sort_by(&:length).reverse
  array&.reduce do |expression, expr_string|
    expression = str(expression).as(file_name.to_sym) if expression.is_a?(String)
    expression | str(expr_string).as(file_name.to_sym)
  end
end

#extend_exp(rule) ⇒ Object



71
72
73
# File 'lib/unitsml/parse.rb', line 71

def extend_exp(rule)
  (extender >> intermediate_exp(rule).as(:sequence)).maybe
end

#intermediate_exp(rule) ⇒ Object



75
76
77
# File 'lib/unitsml/parse.rb', line 75

def intermediate_exp(rule)
  rule | (str("(") >> rule >> str(")"))
end

#sqrt(rule) ⇒ Object



67
68
69
# File 'lib/unitsml/parse.rb', line 67

def sqrt(rule)
  str("sqrt(") >> rule.as(:sqrt) >> str(")")
end