From eae29f8c48329fb69cd9c3824a7aa39e5dfc3d33 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Thu, 11 Sep 2014 13:42:49 -0400 Subject: [PATCH] Make it easy to set default resource limits. --- lib/liquid/context.rb | 6 ++++-- lib/liquid/template.rb | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/lib/liquid/context.rb b/lib/liquid/context.rb index 8e58b1d..5eb8bd6 100644 --- a/lib/liquid/context.rb +++ b/lib/liquid/context.rb @@ -16,12 +16,14 @@ module Liquid attr_reader :scopes, :errors, :registers, :environments, :resource_limits attr_accessor :exception_handler - def initialize(environments = {}, outer_scope = {}, registers = {}, rethrow_errors = false, resource_limits = {}) + def initialize(environments = {}, outer_scope = {}, registers = {}, rethrow_errors = false, resource_limits = nil) @environments = [environments].flatten @scopes = [(outer_scope || {})] @registers = registers @errors = [] - @resource_limits = (resource_limits || {}).merge!({ :render_score_current => 0, :assign_score_current => 0 }) + @resource_limits = resource_limits || Template.default_resource_limits + @resource_limits[:render_score_current] = 0 + @resource_limits[:assign_score_current] = 0 @parsed_expression = Hash.new{ |cache, markup| cache[markup] = Expression.parse(markup) } squash_instance_assigns_with_environments diff --git a/lib/liquid/template.rb b/lib/liquid/template.rb index 5755722..392a9f9 100644 --- a/lib/liquid/template.rb +++ b/lib/liquid/template.rb @@ -86,6 +86,10 @@ module Liquid Strainer.global_filter(mod) end + def default_resource_limits + @default_resource_limits ||= {} + end + # creates a new Template object from liquid source code # To enable profiling, pass in profile: true as an option. # See Liquid::Profiler for more information @@ -95,9 +99,8 @@ module Liquid end end - # creates a new Template from an array of tokens. Use Template.parse instead def initialize - @resource_limits = {} + @resource_limits = self.class.default_resource_limits.dup end # Parse source code.