Method: Main::Parameter::List#parse

Defined in:
lib/main/parameter.rb

#parse(main) ⇒ Object



337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
# File 'lib/main/parameter.rb', line 337

def parse main
  @main, @argv, @env = main, main.argv, main.env

  ignore, stop = [], argv.index('--')

  if stop
    ignore = argv[stop .. -1]
    (argv.size - stop).times{ argv.pop }
  end

  argv.push "--#{ argv.shift }" if argv.first == 'help'

  parse_options argv

  return 'help' if detect{|p| p.name.to_s == 'help' and p.given?}

  parse_keywords argv
  parse_arguments argv
  parse_environment env

  defaults!
  validate!

  argv.push(*ignore[1..-1]) unless ignore.empty? 

  return self
ensure
  @main, @argv, @env = nil
end