class Terminal::Table::Style
Terminal::Table::Style.defaults = {:width => 80}
To set a default style for all tables created afterwards use Style.defaults=
@table.style = {:padding_left => 2, :width => 40}
# by method
@table.style.width = 40
@table.style.padding_left = 2
# by object
@table = Table.new(:style => {:padding_left => 2, :width => 40})
# by constructor
All these examples have the same effect:
option :style
, the Table#style object or the Table#style= method
To create a table with a certain style, use either the constructor
A Style object holds all the formatting information for a Table object
def apply options
def apply options options.each do |m, v| __send__ "#{m}=", v end end
def border=(val)
def border=(val) if val.is_a? Symbol # convert symbol name like :foo_bar to get class FooBarBorder klass_str = val.to_s.split('_').collect(&:capitalize).join + "Border" begin klass = Terminal::Table::const_get(klass_str) @border = klass.new rescue NameError raise "Cannot lookup class Terminal::Table::#{klass_str} from symbol #{val.inspect}" end else @border = val end end
def border_bottom ; @border.bottom ; end
def border_bottom ; @border.bottom ; end
def border_bottom=(val) ; @border.bottom = val ; end
def border_bottom=(val) ; @border.bottom = val ; end
def border_i=(val) ; @border[:i] = val ; end
def border_i=(val) ; @border[:i] = val ; end
def border_left ; @border.left ; end
def border_left ; @border.left ; end
def border_left=(val) ; @border.left = val ; end
def border_left=(val) ; @border.left = val ; end
def border_right ; @border.right ; end
def border_right ; @border.right ; end
def border_right=(val) ; @border.right = val ; end
def border_right=(val) ; @border.right = val ; end
def border_top ; @border.top ; end
def border_top ; @border.top ; end
def border_top=(val) ; @border.top = val ; end
def border_top=(val) ; @border.top = val ; end
def border_x=(val) ; @border[:x] = val ; end
def border_x=(val) ; @border[:x] = val ; end
def border_y ; @border[:y] ; end
def border_y ; @border[:y] ; end
def border_y=(val) ; @border[:y] = val ; end
def border_y=(val) ; @border[:y] = val ; end
def border_y_width ; Util::ansi_escape(@border[:y]).length ; end
def border_y_width ; Util::ansi_escape(@border[:y]).length ; end
def defaults
def defaults klass_defaults = @@defaults.dup # border is an object that needs to be duplicated on instantiation, # otherwise everything will be referencing the same object-id. klass_defaults[:border] = klass_defaults[:border].dup klass_defaults end
def defaults= options
def defaults= options @@defaults = defaults.merge(options) end
def initialize options = {}
def initialize options = {} apply self.class.defaults.merge(options) end
def on_change attr
def on_change attr method_name = :"#{attr}=" old_method = method method_name define_singleton_method(method_name) do |value| old_method.call value yield attr.to_sym, value end end