def parse_keywords argv, params=nil
params ||= select{|p| p.type == :keyword}
replacements = {}
params.each do |p|
names = p.names
name = names.sort_by{|n| [n.size,n]}.last
kre = %r/^\s*(#{ names.join '|' })\s*=/
opt = "--#{ name }"
i = -1
argv.each_with_index do |a, idx|
i += 1
b = argv[idx + 1]
s = "#{ a }#{ b }"
m, key, *ignored = kre.match(s).to_a
if m
replacements[i] ||= a.gsub %r/^\s*#{ key }/, opt
next
end
??
end
end
replacements.each do |i, r|
argv[i] = r
end
parse_options argv, params
end