diff --git a/lib/liquid/registers/disabled_tags.rb b/lib/liquid/registers/disabled_tags.rb index 1b0654f..ab2d786 100644 --- a/lib/liquid/registers/disabled_tags.rb +++ b/lib/liquid/registers/disabled_tags.rb @@ -9,11 +9,11 @@ module Liquid @disabled_tags[tag] > 0 end - def disable(tag) - increment(tag) + def disable(tags) + tags.each { |tag| increment(tag) } yield ensure - decrement(tag) + tags.each { |tag| decrement(tag) } end private diff --git a/lib/liquid/tag.rb b/lib/liquid/tag.rb index d3364ac..e40ad22 100644 --- a/lib/liquid/tag.rb +++ b/lib/liquid/tag.rb @@ -48,6 +48,12 @@ module Liquid "#{tag_name} #{options[:locale].t('errors.disabled.tag')}" end + def disable_tags(context, tags) + context.registers['disabled_tags'].disable(tags) do + yield + end + end + # For backwards compatibility with custom tags. In a future release, the semantics # of the `render_to_output_buffer` method will become the default and the `render` # method will be removed. diff --git a/lib/liquid/tags/render.rb b/lib/liquid/tags/render.rb index 8b8511c..b111876 100644 --- a/lib/liquid/tags/render.rb +++ b/lib/liquid/tags/render.rb @@ -22,7 +22,7 @@ module Liquid end def render_to_output_buffer(context, output) - context.registers['disabled_tags'].disable('include') do + disable_tags(context, %w(include)) do render_tag(context, output) end end diff --git a/test/unit/registers/disabled_tags_test.rb b/test/unit/registers/disabled_tags_test.rb index 6f30a21..bff4bc3 100644 --- a/test/unit/registers/disabled_tags_test.rb +++ b/test/unit/registers/disabled_tags_test.rb @@ -7,23 +7,24 @@ class DisabledTagsTest < Minitest::Test def test_disables_tag_specified register = DisabledTags.new - register.disable("foo") do + register.disable(%w(foo bar)) do assert_equal true, register.disabled?("foo") - assert_equal false, register.disabled?("bar") + assert_equal true, register.disabled?("bar") + assert_equal false, register.disabled?("unknown") end end def test_disables_nested_tags register = DisabledTags.new - register.disable("foo") do - register.disable("foo") do + register.disable(["foo"]) do + register.disable(["foo"]) do assert_equal true, register.disabled?("foo") assert_equal false, register.disabled?("bar") end - register.disable("bar") do + register.disable(["bar"]) do assert_equal true, register.disabled?("foo") assert_equal true, register.disabled?("bar") - register.disable("foo") do + register.disable(["foo"]) do assert_equal true, register.disabled?("foo") assert_equal true, register.disabled?("bar") end