class Expressionist::Parser
Public Class Methods
new(expression)
click to toggle source
# File lib/expressionist/parser.rb, line 10 def initialize(expression) @parsed = nil @compiled = nil @executable = nil case expression when String @expression = expression when Function @compiled = expression when Array @executable = expression else raise ArgumentError, "Unknown expression type: #{expression}" end end
Public Instance Methods
compiled()
click to toggle source
# File lib/expressionist/parser.rb, line 36 def compiled raise RuntimeError, 'Raw nor compiled form was passed' unless @compiled || parsed @compiled ||= Transformer.new.apply(parsed) end
executable()
click to toggle source
# File lib/expressionist/parser.rb, line 41 def executable raise RuntimeError, 'Compiled nor executable form was passed' unless @executable || compiled @executable ||= compiled.to_a end
parsed()
click to toggle source
# File lib/expressionist/parser.rb, line 27 def parsed raise RuntimeError, 'Expression was not passed' unless @expression @parsed ||= Grammar.new.parse(@expression) rescue Parslet::ParseFailed => e # puts expression # puts e.parse_failure_cause.ascii_tree raise ArgumentError, "Invalid expression: #{@expression}" end