def select( highline_context, selection, details = nil )
@items.concat(@hidden_items)
name, action = if selection =~ /^\d+$/
@items[selection.to_i - 1]
else
l_index = "`"
index = @items.map { "#{l_index.succ!}" }.index(selection)
@items.find { |c| c.first == selection } or @items[index]
end
if not @nil_on_handled and not action.nil?
@highline = highline_context
if @shell
action.call(name, details)
else
action.call(name)
end
elsif action.nil?
name
else
nil
end
ensure
@items.slice!(@items.size - @hidden_items.size, @hidden_items.size)
end