Class: Liquify::Block::Drop

Inherits:
Liquid::Drop
  • Object
show all
Defined in:
lib/liquify/block.rb

Instance Method Summary collapse

Constructor Details

#initialize(obj, tokens, context) ⇒ Drop

:nodoc:



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/liquify/block.rb', line 51

def initialize(obj, tokens, context) # :nodoc:
  @obj = obj
  @params = {}

  tokens.each do |t|
    match, key, value = t.match(/\{\{\s*f\.(\w+)(.*)\}\}/).to_a

    @params[key] ||= []
    @params[key] << Liquify::Parameter.new(value, context)
  end
end

Instance Method Details

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

:nodoc:



63
64
65
66
67
68
# File 'lib/liquify/block.rb', line 63

def invoke_drop(key) # :nodoc:
  allowed_methods = @obj.public_methods(false) - [:invoke]
  return unless allowed_methods.include?(key.to_sym)

  @obj.method(key).arity == 1 ? @obj.send(key, @params[key].pop) : @obj.send(key)
end