class Expressionist::Expression

Public Class Methods

new(value) click to toggle source
# File lib/expressionist/expression.rb, line 10
def initialize(value)
  if value.kind_of?(Parser)
    @parser = value
  else
    @executable = value
  end
end

Public Instance Methods

call(context = {}, executable = nil) click to toggle source
# File lib/expressionist/expression.rb, line 22
def call(context = {}, executable = nil)
  executable ||= self.executable

  args = executable[1..-1].map do |exp|
    if exp.kind_of?(Array)
      call(context, exp)
    else
      exp
    end
  end

  function = Functions.get(executable[0])
  unless function
    raise ArgumentError, "Function #{executable[0].inspect} is missing"
  end

  function.call(context, *args)
end
executable() click to toggle source
# File lib/expressionist/expression.rb, line 18
def executable
  @executable ||= @parser.executable
end