Sha256: 22138a9440c5e12ee49afe6efca9c4aecaca9ab21e0cf47f3c34587d94ee3e33

Contents?: true

Size: 1.32 KB

Versions: 14

Compression:

Stored size: 1.32 KB

Contents

# Code taken from Mephisto sources (http://mephistoblog.com/)
module Locomotive
  module Liquid
    module Drops
      class Base < ::Liquid::Drop

        @@forbidden_attributes = %w{_id _version _index}

        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

14 entries across 14 versions & 1 rubygems

Version Path
locomotive_cms-1.0.0.beta.2 lib/locomotive/liquid/drops/base.rb
locomotive_cms-1.0.0.beta lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta12 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta11 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta10 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta9 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta8 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta7 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta5 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta4 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta3 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta2 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4.beta1 lib/locomotive/liquid/drops/base.rb
locomotive_cms-0.0.4 lib/locomotive/liquid/drops/base.rb