diff --git a/lib/liquid/resource_limits.rb b/lib/liquid/resource_limits.rb index 190685e..0c4d052 100644 --- a/lib/liquid/resource_limits.rb +++ b/lib/liquid/resource_limits.rb @@ -19,5 +19,11 @@ module Liquid def reset @render_length = @render_score = @assign_score = 0 end + + def to_hash + instance_variables.each_with_object({}) do |key, hash| + hash[key.to_s[1..-1].to_sym] = instance_variable_get(key) + end + end end end diff --git a/test/integration/template_test.rb b/test/integration/template_test.rb index e0fc528..3e99563 100644 --- a/test/integration/template_test.rb +++ b/test/integration/template_test.rb @@ -181,6 +181,16 @@ class TemplateTest < Minitest::Test assert context.resource_limits.render_length > 0 end + def test_resource_limits_serialization + t = Template.parse("{% if true %}aaaa{% endif %}") + t.resource_limits.render_score_limit = 50 + t.resource_limits.render_length_limit = 50 + t.resource_limits.assign_score_limit = 50 + + expected = {render_score: 0, render_length: 0, assign_score: 0, render_score_limit: 50, render_length_limit: 50, assign_score_limit: 50} + assert_equal expected, t.resource_limits.to_hash + end + def test_can_use_drop_as_context t = Template.new t.registers['lulz'] = 'haha'