Class: AmberVM::Interpreter::Closures

Inherits:
Element show all
Defined in:
lib/amber/interpreter.rb

Direct Known Subclasses

OptimizedClosures

Defined Under Namespace

Classes: Binding

Instance Attribute Summary collapse

Attributes inherited from Element

#pos

Instance Method Summary collapse

Constructor Details

#initialize(content) ⇒ Closures

Returns a new instance of Closures.



338
339
340
# File 'lib/amber/interpreter.rb', line 338

def initialize content
  @content = content
end

Instance Attribute Details

#contentObject

Returns the value of attribute content.



337
338
339
# File 'lib/amber/interpreter.rb', line 337

def content
  @content
end

Instance Method Details

#execute(env) ⇒ Object



346
347
348
# File 'lib/amber/interpreter.rb', line 346

def execute env
  Binding.new(@content, env.data[:locals].dup)
end

#optimize(variables = {}) ⇒ Object



342
343
344
# File 'lib/amber/interpreter.rb', line 342

def optimize variables = {}
  OptimizedClosures.new(@content, variables)
end