def parse!(argv=[])
orig_argv_size = argv.size
ret = []
@options.each_key do |k|
@options[k].value = @options[k].default
end
@specified.clear
parse_file @file if @file
@specified.clear
until argv.empty?
arg = argv.shift
case arg
when "--"
ret.concat argv
break
when /\A--[a-zA-Z0-9_]/
parse_long_opt arg.sub(/\A--/, ""), argv
when /\A-[a-zA-Z0-9]/
parse_short_opt arg.sub(/\A-/, ""), argv
else
ret.push arg
if @stop_at_non_option_argument
ret.concat argv
break
end
end
end
if @obsolete_behavior
n = orig_argv_size - ret.size
argv.replace ret
return n
end
argv.replace ret
return argv
end