Sha256: d24a68eade69525821329fc82137887bdf3c70070d9d604af5b87206108cfdae

Contents?: true

Size: 1.8 KB

Versions: 1

Compression:

Stored size: 1.8 KB

Contents

# encoding: utf-8

module TTY
  class Table
    module Operation
      # A class which responsiblity is to align table rows and header.
      class AlignmentSet < Vector

        attr_reader :widths

        # Initialize an AlignmentSet
        #
        # @api private
        def initialize(aligns, widths = nil)
          @array_converter = Conversion::ArrayConverter.new
          @elements = @array_converter.convert(aligns)
          @widths   = widths
        end

        # Lookup an alignment by index
        #
        # @param [Integer]
        #
        # @return [Symbol] alignment
        #
        # @api public
        def [](index)
          elements.fetch(index, :left)
        end

        # Return each alignment in an Array
        #
        # @return [Array]
        #
        # @api private
        def alignments
          map { |alignment| alignment }
        end

        # Evaluate alignment of the provided row
        #
        # @param [Array] row
        #  the table row
        # @param [Hash] options
        #  the table options
        #
        # @return [TTY::Table::Field]
        #
        # @api public
        def call(field, row, col)
          align_field(field, col)
        end

        private

        # Align each field in a row
        #
        # @param [TTY::Table::Field] field
        #   the table field
        #
        # @param [Integer] col
        #   the table column index
        #
        # @param [Hash] options
        #
        # @return [TTY::Table::Field]
        #
        # @api private
        def align_field(field, col)
          column_width = widths[col]
          alignment    = Alignment.new(field.align || self[col])
          field.value  = alignment.format(field, column_width)
        end
      end # AlignmentSet
    end # Operation
  end # Table
end # TTY

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
tty-0.1.1 lib/tty/table/operation/alignment_set.rb