Class: Liquid::Drop
- Inherits:
-
Object
- Object
- Liquid::Drop
- 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.
Direct Known Subclasses
Constant Summary collapse
- EMPTY_STRING =
''.freeze
Instance Attribute Summary collapse
-
#context ⇒ Object
writeonly
Sets the attribute context.
Instance Method Summary collapse
-
#before_method(method) ⇒ Object
Catch all for the method.
- #has_key?(name) ⇒ Boolean
-
#invoke_drop(method_or_key) ⇒ Object
(also: #[])
called by liquid to invoke a drop.
- #to_liquid ⇒ Object
Instance Attribute Details
#context=(value) ⇒ Object (writeonly)
Sets the attribute context
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
28 29 30 |
# File 'lib/liquid/drop.rb', line 28 def before_method(method) nil end |
#has_key?(name) ⇒ Boolean
41 42 43 |
# File 'lib/liquid/drop.rb', line 41 def has_key?(name) true end |
#invoke_drop(method_or_key) ⇒ Object Also known as: []
called by liquid to invoke a drop
33 34 35 36 37 38 39 |
# File 'lib/liquid/drop.rb', line 33 def invoke_drop(method_or_key) if method_or_key && method_or_key != EMPTY_STRING && 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_liquid ⇒ Object
45 46 47 |
# File 'lib/liquid/drop.rb', line 45 def to_liquid self end |