def param_to_complete(cmd, line)
params = cmd.parameters.select do |p|
(p.attribute_name != 'subcommand_name') and (p.attribute_name != 'subcommand_arguments')
end
return [nil, nil] if params.empty?
param_candidates = []
line.reverse.each do |word|
break if word.start_with?('-')
param_candidates.unshift(word)
end
param = nil
if line.complete?
value = nil
param_index = param_candidates.size
else
value = param_candidates.last
param_index = param_candidates.size - 1
end
if param_index >= 0
if params.size > param_index
param = params[param_index]
elsif params.last.multivalued?
param = params.last
end
end
return [param, value]
end