Merge pull request #386 from Shopify/optimize_variable_parsing

Reduce temporary objects during variable/filter parsing
This commit is contained in:
Jason Hiltz-Laforge
2014-07-22 11:22:57 -04:00

View File

@@ -36,13 +36,13 @@ module Liquid
def lax_parse(markup)
@filters = []
if match = markup.match(/\s*(#{QuotedFragment})(.*)/om)
@name = match[1]
if match[2].match(/#{FilterSeparator}\s*(.*)/om)
if markup =~ /\s*(#{QuotedFragment})(.*)/om
@name = Regexp.last_match(1)
if Regexp.last_match(2) =~ /#{FilterSeparator}\s*(.*)/om
filters = Regexp.last_match(1).scan(FilterParser)
filters.each do |f|
if matches = f.match(/\s*(\w+)/)
filtername = matches[1]
if f =~ /\s*(\w+)/
filtername = Regexp.last_match(1)
filterargs = f.scan(/(?:#{FilterArgumentSeparator}|#{ArgumentSeparator})\s*((?:\w+\s*\:\s*)?#{QuotedFragment})/o).flatten
@filters << [filtername, filterargs]
end