Class: Expressionist::Parser
- Inherits:
-
Object
- Object
- Expressionist::Parser
- Defined in:
- lib/expressionist/parser.rb
Instance Method Summary collapse
- #compiled ⇒ Object
- #executable ⇒ Object
-
#initialize(expression) ⇒ Parser
constructor
A new instance of Parser.
- #parsed ⇒ Object
Constructor Details
#initialize(expression) ⇒ Parser
Returns a new instance of Parser.
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# 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 |
Instance Method Details
#compiled ⇒ Object
36 37 38 39 |
# 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 ⇒ Object
41 42 43 44 |
# 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 ⇒ Object
27 28 29 30 31 32 33 34 |
# 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 |