def parse!(argv=[])
orig_argv_size = argv.size
ret = []
@specified.clear
@option_seq.each do |opt|
opt.value = opt.ovalue = opt.default
begin
opt.value = check_option opt.name.first, opt.default if opt.default.is_a? String
rescue OptConfig::Error
end
end
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