Sha256: 9a49d93fe819ce71ea299b1dbad1f541942dd99de7099d34a0369fcd32848b96

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

module Storefront
  module AttributeHelper
    def underscore_class_name(record)
      record.class.base_class.snake_case
    end
    
    def datetime_for(time)
      with_time_at time
    end
    
    def record_method(method, *args, &block)
      record = args.shift
      sent_method = "#{method}_#{underscore_class_name(record)}"
      if args.length > 0 && options = args.pop
        send(sent_method, record, options, &block)
      else
        send(sent_method, record, &block)
      end
    end
    
    def merge_class!(attributes, *values)
      return {} if attributes.nil?
      hash = merge_class(attributes, *values)
      attributes[:class] = hash[:class] if hash
      attributes
    end
    
    def merge_class(attributes, *values)
      if values.present?
        if attributes[:class].present?
          classes = attributes[:class].split(/\s+/)
        else
          classes = []
        end
        classes += values.compact.map(&:to_s)
        classes.uniq!
      else
        classes = nil
      end

      if classes.present?
        attributes.merge(:class => classes.join(" "))
      else
        attributes
      end
    end

    def index_class(index, length)
      return nil if length.blank? || (length <= 1)

      if index == 0
        "first"
      elsif index == length - 1
        "last"
      else
        nil
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
storefront-0.2.1 lib/storefront/helpers/attribute_helper.rb
storefront-0.2.0 lib/storefront/helpers/attribute_helper.rb