Sha256: c7b9811a2e92490778524ed985499520c7257dc31ca583b76f26627b8ee668a4

Contents?: true

Size: 1.3 KB

Versions: 11

Compression:

Stored size: 1.3 KB

Contents

# Code taken from Mephisto sources (http://mephistoblog.com/)
module Locomotive
  module Liquid    
    module Drops  
      class Base < ::Liquid::Drop
        
        class_inheritable_reader :liquid_attributes
        write_inheritable_attribute :liquid_attributes, []
        attr_reader :source
        delegate :hash, :to => :source
  
        def initialize(source)
          unless source.nil?
            @source = source
            @liquid = liquid_attributes.flatten.inject({}) { |h, k| h.update k.to_s => @source.send(k) }
          end
        end
  
        def id
          (@source.respond_to?(:id) ? @source.id : nil) || 'new'
        end
  
        def before_method(method)
          @liquid[method.to_s]
        end

        # converts an array of records to an array of liquid drops
        def self.liquify(*records, &block)
          i = -1
          records = 
            records.inject [] do |all, r|
              i+=1
              attrs = (block && block.arity == 1) ? [r] : [r, i]
              all << (block ? block.call(*attrs) : r.to_liquid)
              all
            end
          records.compact!
          records
        end

        protected
        
        def liquify(*records, &block)
          self.class.liquify(*records, &block)
        end
          
      end    
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
locomotive_cms-0.0.2.5 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.2.4 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.2.3 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.2.2 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.2.1 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.2 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.1.4 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.1.3 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.1.2 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.1.1 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.1 lib/locomotive/liquid/drops/base.rb