Sha256: a9db4f3faff26f338c06ca58307101f2a27c0474275932af3f98ae0b6197d670
Contents?: true
Size: 1.22 KB
Versions: 1
Compression:
Stored size: 1.22 KB
Contents
module DiningTable module Columns class Column attr_accessor :name, :table, :options, :block def initialize( table, name, options = {}, &block) self.table = table self.name = name self.options = options self.block = block end def value(object) if block block.call(object, self) else object.send(name).try(:to_s) if object.respond_to?(name) end end def header @header ||= begin label = determine_label(:header) return label if label object_class = table.collection.first.try(:class) object_class.human_attribute_name( name ) if object_class && object_class.respond_to?( :human_attribute_name ) end end def footer @footer ||= determine_label(:footer) end def options_for(identifier) options[ identifier ] || { } end private def determine_label( name ) if options[ name ] label_ = options[ name ] label_ = label_.call if label_.respond_to?(:call) return label_.try(:to_s) end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dining-table-0.1.0 | lib/dining-table/columns/column.rb |