class Tabl::Column

Attributes

formats[R]
label[RW]
name[R]
value[W]

Public Class Methods

new(name, args = {}) { |self| ... } click to toggle source
# File lib/tabl/column.rb, line 8
def initialize(name, args = {})
  @name = name
  @label = args[:label] || @name.to_s.titleize
  @value = args[:value] || lambda { |record| record.send(@name) }
  @formats = {}
  @format_dsl = FormatDsl.new(self)

  yield self if block_given?
end

Public Instance Methods

format(key = nil, value = nil, record = nil, context = nil) click to toggle source
# File lib/tabl/column.rb, line 22
def format(key = nil, value = nil, record = nil, context = nil)
  if key.nil?
    return @format_dsl
  else
    format = @formats[key]
    return format unless value
    if (context)
      if (format.arity == 1)
        context.instance_exec(value, &format)
      else
        context.instance_exec(value, record, &format)
      end
    else
      if (format.arity == 1)
        return format.call(value)
      else
        return format.call(value, record)
      end
    end
  end
end
value(record) click to toggle source
# File lib/tabl/column.rb, line 18
def value(record)
  @value.call(record)
end