class TabulaRasa::Row

Constants

ATTRIBUTES

NOTE: Need to handle ALL valid HTML5 attributes

Attributes

base[R]
options[R]

Public Class Methods

new(base, options = {}) { |self| ... } click to toggle source
# File lib/tabula_rasa/row.rb, line 8
def initialize(base, options = {}, &block)
  @base = base
  @options = options
  yield self if block_given?
end

Public Instance Methods

data(key, &block) click to toggle source
# File lib/tabula_rasa/row.rb, line 21
def data(key, &block)
  options[:data] ||= {}
  options[:data][key] = block
end
options_for(instance) click to toggle source
# File lib/tabula_rasa/row.rb, line 14
def options_for(instance)
  {
    id: [id_value_for(instance), dom_id_for(instance)].compact.join(' ').squish,
    class: [class_value_for(instance), zebrastripe, dom_class_for(instance)].compact.join(' ').squish
  }.merge data_values_for(instance)
end

Private Instance Methods

data_values_for(instance) click to toggle source
# File lib/tabula_rasa/row.rb, line 58
def data_values_for(instance)
  return {} if options[:data].blank?
  options[:data].inject({}) do |m, x|
    key, value = x
    m["data-#{key}"] = value.call(instance)
    m
  end
end
dom_class_for(instance) click to toggle source
# File lib/tabula_rasa/row.rb, line 54
def dom_class_for(instance)
  dom_class(instance) if base.options[:dom_class] == true
end
dom_id_for(instance) click to toggle source
# File lib/tabula_rasa/row.rb, line 49
def dom_id_for(instance)
  return unless base.options[:dom_id] == true
  dom_id(instance) unless id_value_for(instance).present?
end
zebrastripe() click to toggle source
# File lib/tabula_rasa/row.rb, line 36
def zebrastripe
  case base.options[:zebra]
  when false
    # Nothing
  when nil
    cycle *%w{even odd}
  when Array
    cycle *base.options[:zebra]
  else
    raise ArgumentError, "Invalid value for options[:zebra]: #{base.options[:zebra]}. Should be array."
  end
end