mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-15 08:50:45 -07:00
Make before_method work more like method_missing
This commit is contained in:
+5
-3
@@ -29,9 +29,11 @@ module Liquid
|
|||||||
|
|
||||||
# called by liquid to invoke a drop
|
# called by liquid to invoke a drop
|
||||||
def invoke_drop(method)
|
def invoke_drop(method)
|
||||||
result = before_method(method)
|
if self.class.public_instance_methods.include?(method.to_s)
|
||||||
result ||= send(method.to_sym) if self.class.public_instance_methods.include?(method.to_s)
|
send(method.to_sym)
|
||||||
result
|
else
|
||||||
|
before_method(method)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def has_key?(name)
|
def has_key?(name)
|
||||||
|
|||||||
+8
-1
@@ -62,7 +62,10 @@ class ProductDrop < Liquid::Drop
|
|||||||
end
|
end
|
||||||
|
|
||||||
class EnumerableDrop < Liquid::Drop
|
class EnumerableDrop < Liquid::Drop
|
||||||
include Enumerable
|
|
||||||
|
def size
|
||||||
|
3
|
||||||
|
end
|
||||||
|
|
||||||
def each
|
def each
|
||||||
yield 1
|
yield 1
|
||||||
@@ -148,6 +151,10 @@ class DropsTest < Test::Unit::TestCase
|
|||||||
assert_equal '123', Liquid::Template.parse( '{% for c in collection %}{{c}}{% endfor %}').render('collection' => EnumerableDrop.new)
|
assert_equal '123', Liquid::Template.parse( '{% for c in collection %}{{c}}{% endfor %}').render('collection' => EnumerableDrop.new)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_enumerable_drop_size
|
||||||
|
assert_equal '3', Liquid::Template.parse( '{{collection.size}}').render('collection' => EnumerableDrop.new)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user