Class: Bindy::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/bindy/context.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(variables = {}) ⇒ Context

Returns a new instance of Context.



7
8
9
# File 'lib/bindy/context.rb', line 7

def initialize(variables={})
  @variables = variables
end

Instance Attribute Details

#variablesObject (readonly)

Returns the value of attribute variables.



5
6
7
# File 'lib/bindy/context.rb', line 5

def variables
  @variables
end

Instance Method Details

#evaluate(expression) ⇒ Object

Raises:

  • (ArgumentError)


11
12
13
14
# File 'lib/bindy/context.rb', line 11

def evaluate(expression)
  raise ArgumentError, "Expression must be a string (#{expression})" unless expression.kind_of?(String)
  Language.parse(expression).evaluate(self)
end

#var(name) ⇒ Object



16
17
18
19
20
21
22
# File 'lib/bindy/context.rb', line 16

def var(name)
  name.split('.').inject(variables) do |vars, key| 
    vars.fetch(key) { vars.fetch(key.to_sym) }
  end
rescue KeyError
  raise ArgumentError, "Undefined variable #{name}"
end