fix cycle tag not resetting

This commit is contained in:
Michael Go
2025-01-07 14:32:07 -04:00
parent 0b1dc295ff
commit 7c8a269b4d
2 changed files with 55 additions and 1 deletions
+7 -1
View File
@@ -68,7 +68,13 @@ module Liquid
def variables_from_string(markup)
markup.split(',').collect do |var|
var =~ /\s*(#{QuotedFragment})\s*/o
Regexp.last_match(1) ? parse_expression(Regexp.last_match(1)) : nil
next unless Regexp.last_match(1)
# Expression Parser returns cached objects, and we need to dup them to
# start the cycle over for each new cycle call.
# Liquid-C does not have a cache, so we don't need to dup the object.
var = parse_expression(Regexp.last_match(1))
var.is_a?(VariableLookup) ? var.dup : var
end.compact
end