Method: RubyParser#args

Defined in:
lib/ruby_parser_extras.rb

#args(arg, optarg, rest_arg, block_arg) ⇒ Object



153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
# File 'lib/ruby_parser_extras.rb', line 153

def args arg, optarg, rest_arg, block_arg
  arg ||= s(:args)

  result = arg
  if optarg then
    optarg[1..-1].each do |lasgn| # FIX clean sexp iter
      raise "wtf? #{lasgn.inspect}" unless lasgn[0] == :lasgn
      result << lasgn[1]
    end
  end

  result << rest_arg  if rest_arg
  result << :"&#{block_arg.last}" if block_arg
  result << optarg    if optarg # TODO? huh - processed above as well

  result
end