Sha256: 82a1bffbfad83be68e478cb06b1190bf2c801c9f02b01c2899e6961f3b2fa511

Contents?: true

Size: 1.33 KB

Versions: 22

Compression:

Stored size: 1.33 KB

Contents

module Liquid
  
  # A drop in liquid is a class which allows you to to export DOM like things to liquid
  # Methods of drops are callable. 
  # The main use for liquid drops is the implement lazy loaded objects. 
  # If you would like to make data available to the web designers which you don't want loaded unless needed then 
  # a drop is a great way to do that
  #
  # Example:
  #
  # class ProductDrop < Liquid::Drop
  #   def top_sales
  #      Shop.current.products.find(:all, :order => 'sales', :limit => 10 )
  #   end
  # end
  #  
  # tmpl = Liquid::Template.parse( ' {% for product in product.top_sales %} {{ product.name }} {%endfor%} '  )
  # tmpl.render('product' => ProductDrop.new ) # will invoke top_sales query. 
  #
  # Your drop can either implement the methods sans any parameters or implement the before_method(name) method which is a 
  # catch all
  class Drop
    attr_writer :context

    # Catch all for the method 
    def before_method(method)
      nil
    end
    
    # called by liquid to invoke a drop
    def invoke_drop(method)      
      result = before_method(method)
      result ||= send(method.to_sym) if self.class.public_instance_methods.include?(method.to_s)
      result
    end
    
    def has_key?(name)
      true
    end
    
    def to_liquid
      self
    end

    alias :[] :invoke_drop
  end
  
end

Version data entries

22 entries across 22 versions & 8 rubygems

Version Path
aslakjo-aslakjo-comatose-2.0.5.1 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.2 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.3 lib/liquid/drop.rb
darthapo-comatose-2.0.3 lib/liquid/drop.rb
darthapo-comatose-2.0.4 lib/liquid/drop.rb
darthapo-comatose-2.0.5 lib/liquid/drop.rb
darthapo-comatose-2.0 lib/liquid/drop.rb
jcnetdev-comatose-2.0.1 lib/liquid/drop.rb
staugaard-comatose-2.0.2 lib/liquid/drop.rb
staugaard-comatose-2.0.3 lib/liquid/drop.rb
comatose-2.0.5 lib/liquid/drop.rb
comatose-2.0.1 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.12 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.11 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.10 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.9 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.8 lib/liquid/drop.rb
aslakjo-comatose-2.0.5.7 lib/liquid/drop.rb
liquid-1.7.0 lib/liquid/drop.rb
liquid-1.9.0 lib/liquid/drop.rb