choose (HighLine)

    # File lib/highline.rb, line 286
      def choose( *items, &details )
        @menu = @question = Menu.new(&details)
        @menu.choices(*items) unless items.empty?

        # Set _answer_type_ so we can double as the Question for ask().
        @menu.answer_type = if @menu.shell
          lambda do |command|    # shell-style selection
            first_word = command.to_s.split.first || ""

            options = @menu.options
            options.extend(OptionParser::Completion)
            answer = options.complete(first_word)

            if answer.nil?
              raise Question::NoAutoCompleteMatch
            end

            [answer.last, command.sub(/^\s*#{first_word}\s*/, "")]
          end
        else
          @menu.options          # normal menu selection, by index or name
        end

        # Provide hooks for ERb layouts.
        @header   = @menu.header
        @prompt   = @menu.prompt

        if @menu.shell
          selected = ask("Ignored", @menu.answer_type)
          @menu.select(self, *selected)
        else
          selected = ask("Ignored", @menu.answer_type)
          @menu.select(self, selected)
        end
      end