mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-18 18:30:40 -07:00
Shortcut for for statement
This commit is contained in:
@@ -140,6 +140,16 @@ module Liquid
|
|||||||
@scope[key][0] = val
|
@scope[key][0] = val
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def set_level(key, val, int)
|
||||||
|
@scope[key] ||= []
|
||||||
|
@scope[key][int] = val
|
||||||
|
end
|
||||||
|
|
||||||
|
def create_level(key)
|
||||||
|
(@scope[key] ||= [nil]) << nil
|
||||||
|
@scope[key].size - 1
|
||||||
|
end
|
||||||
|
|
||||||
def key?(key)
|
def key?(key)
|
||||||
self[key] != nil
|
self[key] != nil
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -163,13 +163,12 @@ module Liquid
|
|||||||
|
|
||||||
begin
|
begin
|
||||||
context['forloop'.freeze] = loop_vars
|
context['forloop'.freeze] = loop_vars
|
||||||
|
level = context.create_level(@variable_name)
|
||||||
|
|
||||||
segment.each do |item|
|
segment.each do |item|
|
||||||
context[@variable_name] = item
|
context.set_level(@variable_name, item, level)
|
||||||
result << @for_block.render(context)
|
result << @for_block.render(context)
|
||||||
loop_vars.send(:increment!)
|
loop_vars.send(:increment!)
|
||||||
context.unset(@variable_name)
|
|
||||||
|
|
||||||
# Handle any interrupts if they exist.
|
# Handle any interrupts if they exist.
|
||||||
if context.interrupt?
|
if context.interrupt?
|
||||||
interrupt = context.pop_interrupt
|
interrupt = context.pop_interrupt
|
||||||
@@ -177,9 +176,10 @@ module Liquid
|
|||||||
next if interrupt.is_a? ContinueInterrupt
|
next if interrupt.is_a? ContinueInterrupt
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
context.unset(@variable_name)
|
||||||
context.unset('forloop'.freeze)
|
context.unset('forloop'.freeze)
|
||||||
ensure
|
ensure
|
||||||
|
|
||||||
for_stack.pop
|
for_stack.pop
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user