Module: Trxl::FormalParameterList2

Defined in:
lib/trxl/trxl_grammar.rb

Instance Method Summary collapse

Instance Method Details

#bind(args, env = Environment.new) ⇒ Object



1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
# File 'lib/trxl/trxl_grammar.rb', line 1630

def bind(args, env = Environment.new)
  if (a = args.length) < (f = variables.length)
    raise WrongNumberOfArgumentsException, "#{a} instead of #{f}"
  end
  env.merge!(variables.zip(args).inject({}) do |bindings, param|
    bindings.merge(param.first.name => param.last)
  end)
  # store arguments array in scope, javascript like
  env.merge!(:arguments => args)
end

#lengthObject



1645
1646
1647
# File 'lib/trxl/trxl_grammar.rb', line 1645

def length
  variables.length
end

#to_s(env = Environment.new) ⇒ Object



1649
1650
1651
# File 'lib/trxl/trxl_grammar.rb', line 1649

def to_s(env = Environment.new)
  "(#{variables.map { |var| var.text_value }.join(',')})"
end

#variablesObject



1641
1642
1643
# File 'lib/trxl/trxl_grammar.rb', line 1641

def variables
  [variable] + more_variables.elements.map { |e| e.variable }
end