class MonoclePrint::Table::Column

Attributes

alignment[RW]
index[R]
table[R]

Public Class Methods

new( table, index ) click to toggle source
# File lib/monocle-print/table/column.rb, line 9
def initialize( table, index )
  @table        = table
  @index        = index
  @wrap         = false
  @flow         = false
  @alignment    = :left
  @fixed_width  = nil
  @cached_width = nil
end

Public Instance Methods

calculate_metrics() click to toggle source
# File lib/monocle-print/table/column.rb, line 83
def calculate_metrics
  @cached_width = @fixed_width || calculate_width
end
cells() click to toggle source
# File lib/monocle-print/table/column.rb, line 48
def cells
  @table.grep( Row ) { | row | row[ @index ] || Line( '' ) }
end
clear_metrics() click to toggle source
# File lib/monocle-print/table/column.rb, line 87
def clear_metrics
  @cached_width = nil
end
first?() click to toggle source
# File lib/monocle-print/table/column.rb, line 60
def first?
  @index.zero?
end
fixed=( bool ) click to toggle source
# File lib/monocle-print/table/column.rb, line 40
def fixed=( bool )
  self.malleable = !bool
end
fixed?() click to toggle source
# File lib/monocle-print/table/column.rb, line 36
def fixed?
  not malleable?
end
last?() click to toggle source
# File lib/monocle-print/table/column.rb, line 64
def last?
  @index == (table.columns.length - 1)
end
malleable=( bool ) click to toggle source
# File lib/monocle-print/table/column.rb, line 32
def malleable=( bool )
  @wrap = @flow = bool
end
malleable?() click to toggle source
# File lib/monocle-print/table/column.rb, line 28
def malleable?
  @wrap and @flow
end
next_column() click to toggle source
# File lib/monocle-print/table/column.rb, line 56
def next_column
  @table.columns[ @index + 1 ]
end
prepare( cell_text ) click to toggle source
# File lib/monocle-print/table/column.rb, line 68
def prepare( cell_text )
  cell_text = cell_text ? cell_text.dup : Text( ' ' )
  @flow and cell_text.reflow!( false )
  @wrap and cell_text = cell_text.wrap( width - 1 )
  cell_text.align!( @alignment, width )
end
previous_column() click to toggle source
# File lib/monocle-print/table/column.rb, line 52
def previous_column
  @index.zero? ? nil : @table.columns[ @index - 1 ]
end
title() click to toggle source
# File lib/monocle-print/table/column.rb, line 44
def title
  @table.titles[ @index ]
end
width() click to toggle source
# File lib/monocle-print/table/column.rb, line 79
def width
  @fixed_width or @cached_width or calculate_width
end
width=( w ) click to toggle source
# File lib/monocle-print/table/column.rb, line 75
def width=( w )
  @fixed_width = Utils.at_least( w.to_i, 1 )
end

Protected Instance Methods

calculate_width() click to toggle source
# File lib/monocle-print/table/column.rb, line 93
def calculate_width
  @table.grep( Row ) { |r| c = r[ @index ] and c.width or 0 }.max || 0
end