Add find_own_variable method to look up internal context variables

This commit is contained in:
Justin Li 2015-05-12 16:49:39 -04:00
parent 239cfa5a44
commit 4c9d2009f9
2 changed files with 13 additions and 2 deletions

View File

@ -177,7 +177,18 @@ module Liquid
variable = variable.to_liquid
variable.context = self if variable.respond_to?(:context=)
return variable
variable
end
def find_own_variable(key)
index = @scopes.find_index { |s| s.has_key?(key) }
return unless index
scope = @scopes[index]
variable = lookup_and_evaluate(@scopes[index], key).to_liquid
variable.context = self if variable.respond_to?(:context=)
variable
end
def lookup_and_evaluate(obj, key)

View File

@ -99,7 +99,7 @@ module Liquid
# Store our progress through the collection for the continue flag
context.registers[:for][@name] = from + segment.length
parent_loop = context.find_variable('forloop'.freeze)
parent_loop = context.find_own_variable('forloop'.freeze)
context.stack do
segment.each_with_index do |item, index|