Create a column-based layout.
@param [String,Array] list
Multiline String or Array of strings to columnize.
@param [Hash] options
Options to customize columnization.
@option options [Fixnum] :columns
Number of columns.
@option options [Symbol] :align
Column alignment, either :left, :right or :center.
@option options [String,Fixnum] :padding
String or number or spaces to append to each column.
The format block MUST return ANSI codes.
# File lib/ansi/columns.rb, line 27 def initialize(list, options={}, &format) self.list = list self.columns = options[:columns] || options[:cols] self.padding = options[:padding] || 1 self.align = options[:align] || :left #self.ansi = options[:ansi] self.format = format #@columns = nil if @columns == 0 end
Set alignment ensuring value is a symbol.
@param [to_sym] symbol
Either `:right`, `:left` or `:center`.
@return [Symbol] The given symbol.
# File lib/ansi/columns.rb, line 91 def align=(symbol) symbol = symbol.to_sym raise ArgumentError, "invalid alignment -- #{symbol.inspect}" unless [:left, :right, :center].include?(symbol) @align = symbol end
Set column count ensuring value is either an integer or nil. The the value given is zero, it will be taken to mean the same as nil, which means fit-to-screen.
# File lib/ansi/columns.rb, line 64 def columns=(integer) integer = integer.to_i @columns = (integer.zero? ? nil : integer) end
Set formatting procedure. The procedure must return ANSI codes, suitable for passing to String#ansi method.
# File lib/ansi/columns.rb, line 103 def format=(procedure) @format = procedure ? procedure.to_proc : nil end
# File lib/ansi/columns.rb, line 40 def inspect "#<#{self.class}:#{object_id} #{list.inspect} x #{columns}>" end
# File lib/ansi/columns.rb, line 117 def join(cols=nil) to_s_columns(cols || columns) end
# File lib/ansi/columns.rb, line 48 def list=(list) case list when ::String @list = list.lines.to_a.map{ |e| e.chomp("\n") } when ::Array @list = list.map{ |e| e.to_s } end end
Generated with the Darkfish Rdoc Generator 2.