Class: Liquid::Drop

Inherits:
Object
  • Object
show all
Defined in:
lib/liquid/drop.rb

Overview

A drop in liquid is a class which allows you to export DOM like things to liquid. Methods of drops are callable. The main use for liquid drops is to 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.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#context=(value) ⇒ Object (writeonly)

Sets the attribute context

Parameters:

  • value

    the value to set the attribute context to.



23
24
25
# File 'lib/liquid/drop.rb', line 23

def context=(value)
  @context = value
end

Instance Method Details

#before_method(method) ⇒ Object

Catch all for the method



26
27
28
# File 'lib/liquid/drop.rb', line 26

def before_method(method)
  nil
end

#has_key?(name) ⇒ Boolean

Returns:

  • (Boolean)


39
40
41
# File 'lib/liquid/drop.rb', line 39

def has_key?(name)
  true
end

#invoke_drop(method_or_key) ⇒ Object Also known as: []

called by liquid to invoke a drop



31
32
33
34
35
36
37
# File 'lib/liquid/drop.rb', line 31

def invoke_drop(method_or_key)
  if method_or_key && method_or_key != '' && self.class.public_method_defined?(method_or_key.to_s.to_sym)
    send(method_or_key.to_s.to_sym)
  else
    before_method(method_or_key)
  end
end

#to_liquidObject



43
44
45
# File 'lib/liquid/drop.rb', line 43

def to_liquid
  self
end