Sha256: d0fa8808e4b82729c75d87720d056590680ecc7b1033a3922909e4a9ff28d2f8

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module Termtable
  class Cell
    attr_reader :value
    attr_accessor :max_column_size,
                  :padding,
                  :alignment,
                  :total_padding

    def initialize(value)
      @value = value.to_s
    end

    def expand?
      max_column_size != value.to_s.size + total_padding
    end

    def left_padding
      count = case alignment
              when 'right'
                expand? ? max_column_size - value.to_s.size : padding
              when 'center'
                expand? ? (max_column_size - value.to_s.size) / 2 : padding
              else
                0
              end
      ' ' * count
    end

    def right_padding
      count = case alignment
              when 'right'
                0
              when 'center'
                if expand? && max_column_size.even?
                  (max_column_size - value.to_s.size) / 2
                elsif expand? && max_column_size.odd?
                  (max_column_size - value.to_s.size) / 2 + 1
                else
                  padding
                end
              else
                expand? ? max_column_size - value.to_s.size : padding
              end
      ' ' * count
    end

    def render
      "#{left_padding}#{value}#{right_padding}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
termtable-0.1.0 lib/termtable/cell.rb