class Liquid::Drop

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

Defined in:

liquid/drop.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(context : Liquid::Context = Context.new) #

[View source]

Instance Method Detail

def [](method_or_key) #

[View source]
def before_method(method) #

Catch all for the method


[View source]
def context : Context #

[View source]
def context=(context : Context) #

[View source]
def has_key?(name) #

[View source]
def invoke_drop(method_or_key) : Liquid::Type #

called by liquid to invoke a drop

TODO explictly defining forbidden methods shouldn't be needed the macro type methods should only return methods defined in that class, not any inherited methods


[View source]
def to_liquid #

[View source]