list (HighLine)

    # File lib/highline.rb, line 376
      def list( items, mode = :rows, option = nil )
        items = items.to_ary.map do |item|
          ERB.new(item, nil, "%").result(binding)
        end

        case mode
        when :inline
          option = " or " if option.nil?

          case items.size
          when 0
            ""
          when 1
            items.first
          when 2
            "#{items.first}#{option}#{items.last}"
          else
            items[0..-2].join(", ") + "#{option}#{items.last}"
          end
        when :columns_across, :columns_down
          max_length = actual_length(
            items.max { |a, b| actual_length(a) <=> actual_length(b) }
          )

          if option.nil?
            limit  = @wrap_at || 80
            option = (limit + 2) / (max_length + 2)
          end

          items     = items.map do |item|
            pad = max_length + (item.length - actual_length(item))
            "%-#{pad}s" % item
          end
          row_count = (items.size / option.to_f).ceil

          if mode == :columns_across
            rows = Array.new(row_count) { Array.new }
            items.each_with_index do |item, index|
              rows[index / option] << item
            end

            rows.map { |row| row.join("  ") + "\n" }.join
          else
            columns = Array.new(option) { Array.new }
            items.each_with_index do |item, index|
              columns[index / row_count] << item
            end

            list = ""
            columns.first.size.times do |index|
              list << columns.map { |column| column[index] }.
                              compact.join("  ") + "\n"
            end
            list
          end
        else
          items.map { |i| "#{i}\n" }.join
        end
      end