Class: ZunScript::ZBlock
Direct Known Subclasses
Instance Method Summary collapse
- #bind(args) ⇒ Object
- #call(args) ⇒ Object
-
#initialize(statements, parameters, parentscope, env) ⇒ ZBlock
constructor
A new instance of ZBlock.
Methods inherited from ZValue
Constructor Details
#initialize(statements, parameters, parentscope, env) ⇒ ZBlock
Returns a new instance of ZBlock.
3 4 5 6 7 8 |
# File 'lib/zunscript/block.rb', line 3 def initialize statements, parameters, parentscope, env super env @body = statements @parameters = parameters @scope = parentscope end |
Instance Method Details
#bind(args) ⇒ Object
23 24 25 26 27 28 29 30 31 32 |
# File 'lib/zunscript/block.rb', line 23 def bind args scope = ZScope.new @scope i = 0 args.each do |a| scope.set_local @parameters[i].text, a i += 1 end return ZBlock.new @body, @parameters[i..-1], scope, @env end |
#call(args) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/zunscript/block.rb', line 10 def call args scope = ZScope.new @scope @parameters.each do |p| scope.set_local p.text, args.shift end result = nil @body.each do |node| result = @env.resolve node, scope end return result end |