mirror of
https://github.com/Shopify/liquid.git
synced 2026-09-16 09:20:42 -07:00
Convert render output to strings in BlockBody
This commit is contained in:
@@ -104,11 +104,13 @@ module Liquid
|
||||
|
||||
def render_token(token, context)
|
||||
token_output = (token.respond_to?(:render) ? token.render(context) : token)
|
||||
context.resource_limits.increment_render_length(token_output)
|
||||
token_str = token_output.is_a?(Array) ? token_output.join : token_output.to_s
|
||||
|
||||
context.resource_limits.render_length += token_str.length
|
||||
if context.resource_limits.reached?
|
||||
raise MemoryError.new("Memory limits exceeded".freeze)
|
||||
end
|
||||
token_output
|
||||
token_str
|
||||
end
|
||||
|
||||
def create_variable(token, options)
|
||||
|
||||
@@ -18,22 +18,5 @@ module Liquid
|
||||
(@render_score_limit && @render_score > @render_score_limit ) ||
|
||||
(@assign_score_limit && @assign_score > @assign_score_limit )
|
||||
end
|
||||
|
||||
def increment_render_length(obj)
|
||||
@render_length += increment_for(obj)
|
||||
end
|
||||
|
||||
def increment_render_score(obj)
|
||||
@render_score += increment_for(obj)
|
||||
end
|
||||
|
||||
def increment_assign_score(obj)
|
||||
@assign_score += increment_for(obj)
|
||||
end
|
||||
|
||||
private
|
||||
def increment_for(obj)
|
||||
obj.instance_of?(String) || obj.instance_of?(Array) || obj.instance_of?(Hash) ? obj.length : 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -25,7 +25,10 @@ module Liquid
|
||||
def render(context)
|
||||
val = @from.render(context)
|
||||
context.scopes.last[@to] = val
|
||||
context.resource_limits.increment_assign_score(val)
|
||||
|
||||
inc = val.instance_of?(String) || val.instance_of?(Array) || val.instance_of?(Hash) ? val.length : 1
|
||||
context.resource_limits.assign_score += inc
|
||||
|
||||
''.freeze
|
||||
end
|
||||
|
||||
|
||||
@@ -25,7 +25,7 @@ module Liquid
|
||||
def render(context)
|
||||
output = super
|
||||
context.scopes.last[@to] = output
|
||||
context.resource_limits.increment_assign_score(output)
|
||||
context.resource_limits.assign_score += output.length
|
||||
''.freeze
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user