Class: Columnist::Column

Inherits:
Object
  • Object
show all
Includes:
OptionsValidator
Defined in:
lib/columnist/column.rb

Constant Summary collapse

VALID_OPTIONS =
[:width, :padding, :align, :color, :bold, :underline, :reversed]

Instance Method Summary collapse

Methods included from OptionsValidator

#validate_options

Constructor Details

#initialize(text = nil, options = {}) ⇒ Column

Returns a new instance of Column.

Raises:

  • (ArgumentError)


10
11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/columnist/column.rb', line 10

def initialize(text = nil, options = {})
    self.validate_options(options, *VALID_OPTIONS)
    self.text = text.to_s
    self.width = options[:width] || 10
    self.align = options[:align] || 'left'
    self.padding = options[:padding] || 0
    self.color = options[:color] || nil
    self.bold = options[:bold] || false
    self.underline = options[:underline] || false
    self.reversed = options[:reversed] || false

    raise ArgumentError unless self.width > 0
    raise ArgumentError unless self.padding.to_s.match(/^\d+$/)
end

Instance Method Details

#required_widthObject



29
30
31
# File 'lib/columnist/column.rb', line 29

def required_width
    self.text.to_s.size + 2 * self.padding
end

#screen_rowsObject



33
34
35
36
37
38
39
# File 'lib/columnist/column.rb', line 33

def screen_rows
    if self.text.nil? || self.text.empty?
        [' ' * self.width]
    else
        self.text.scan(/.{1,#{self.size}}/m).map { |s| to_cell(s) }
    end
end

#sizeObject



25
26
27
# File 'lib/columnist/column.rb', line 25

def size
    self.width - 2 * self.padding
end