Class: TTY::Table::Border
- Inherits:
-
Object
- Object
- TTY::Table::Border
- Includes:
- Equatable, Unicode
- Defined in:
- lib/tty/table/border.rb,
lib/tty/table/border/null.rb,
lib/tty/table/border/ascii.rb,
lib/tty/table/border/unicode.rb,
lib/tty/table/border/row_line.rb
Overview
Abstract base class that is responsible for building the table border.
Defined Under Namespace
Classes: ASCII, Null, RowLine, Unicode
Constant Summary collapse
- EMPTY_CHAR =
''.freeze
- SPACE_CHAR =
' '.freeze
- EACH_ROW =
Represent a separtor on each row
:each_row
Class Attribute Summary collapse
-
.characters ⇒ Object
private
Store characters for border.
Instance Attribute Summary collapse
-
#border ⇒ Object
readonly
The table custom border characters.
Class Method Summary collapse
-
.def_border(characters = (not_set=true), &block) ⇒ Hash
Define border characters.
Instance Method Summary collapse
-
#[](type) ⇒ String
private
Retrive individula character by type.
-
#bottom_line ⇒ String
private
A line spannig all columns marking bottom of a table.
-
#color? ⇒ Boolean
Check if border color is set.
-
#initialize(column_widths, options = nil) ⇒ Object
constructor
private
Instantiate a new object.
-
#row_line(row) ⇒ String
A line spanning all columns delemeting fields in a row.
-
#separator ⇒ String
private
A line spanning all columns delemeting rows in a table.
-
#set_color(color, *strings) ⇒ Array[String]
Set color on characters.
-
#top_line ⇒ String
private
A line spanning all columns marking top of a table.
Methods included from Unicode
#as_unicode, #clean_utf8, #utf8?
Constructor Details
#initialize(column_widths, options = nil) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Instantiate a new object
45 46 47 48 49 50 51 52 53 |
# File 'lib/tty/table/border.rb', line 45 def initialize(column_widths, = nil) if self.class == Border fail NotImplementedError, "#{self} is an abstract class" else @widths = column_widths @border = TTY::Table::BorderOptions.from @color = Pastel.new end end |
Class Attribute Details
.characters ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Store characters for border
32 33 34 |
# File 'lib/tty/table/border.rb', line 32 def characters @characters end |
Instance Attribute Details
#border ⇒ Object (readonly)
The table custom border characters
24 25 26 |
# File 'lib/tty/table/border.rb', line 24 def border @border end |
Class Method Details
.def_border(characters = (not_set=true), &block) ⇒ Hash
Define border characters
63 64 65 66 67 68 |
# File 'lib/tty/table/border.rb', line 63 def self.def_border(characters=(not_set=true), &block) return self.characters = characters unless not_set dsl = TTY::Table::BorderDSL.new(&block) self.characters = dsl.characters end |
Instance Method Details
#[](type) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Retrive individula character by type
78 79 80 81 82 |
# File 'lib/tty/table/border.rb', line 78 def [](type) characters = self.class.characters chars = border.nil? ? characters : characters.merge(border.characters) chars[type] || EMPTY_CHAR end |
#bottom_line ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A line spannig all columns marking bottom of a table.
120 121 122 |
# File 'lib/tty/table/border.rb', line 120 def bottom_line (result = render(:bottom)).empty? ? nil : result end |
#color? ⇒ Boolean
Check if border color is set
89 90 91 |
# File 'lib/tty/table/border.rb', line 89 def color? border && border.style end |
#row_line(row) ⇒ String
A line spanning all columns delemeting fields in a row.
141 142 143 144 145 146 147 |
# File 'lib/tty/table/border.rb', line 141 def row_line(row) line = RowLine.new(self['left'], self['center'], self['right']) line.colorize(self, border.style) if color? result = row_heights(row, line) result.empty? ? EMPTY_CHAR : result end |
#separator ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A line spanning all columns delemeting rows in a table.
129 130 131 |
# File 'lib/tty/table/border.rb', line 129 def separator (result = render(:mid)).empty? ? nil : result end |
#set_color(color, *strings) ⇒ Array[String]
Set color on characters
102 103 104 |
# File 'lib/tty/table/border.rb', line 102 def set_color(color, *strings) strings.map { |string| @color.decorate(string, color) } end |
#top_line ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
A line spanning all columns marking top of a table.
111 112 113 |
# File 'lib/tty/table/border.rb', line 111 def top_line (result = render(:top)).empty? ? nil : result end |