Allow multiple tags to be disabled at once

This commit is contained in:
Mike Angell
2019-09-23 23:36:27 +10:00
parent 008c22230a
commit 7f136c8fa6
4 changed files with 17 additions and 10 deletions
+3 -3
View File
@@ -9,11 +9,11 @@ module Liquid
@disabled_tags[tag] > 0 @disabled_tags[tag] > 0
end end
def disable(tag) def disable(tags)
increment(tag) tags.each { |tag| increment(tag) }
yield yield
ensure ensure
decrement(tag) tags.each { |tag| decrement(tag) }
end end
private private
+6
View File
@@ -48,6 +48,12 @@ module Liquid
"#{tag_name} #{options[:locale].t('errors.disabled.tag')}" "#{tag_name} #{options[:locale].t('errors.disabled.tag')}"
end 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 # 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` # of the `render_to_output_buffer` method will become the default and the `render`
# method will be removed. # method will be removed.
+1 -1
View File
@@ -22,7 +22,7 @@ module Liquid
end end
def render_to_output_buffer(context, output) def render_to_output_buffer(context, output)
context.registers['disabled_tags'].disable('include') do disable_tags(context, %w(include)) do
render_tag(context, output) render_tag(context, output)
end end
end end
+7 -6
View File
@@ -7,23 +7,24 @@ class DisabledTagsTest < Minitest::Test
def test_disables_tag_specified def test_disables_tag_specified
register = DisabledTags.new register = DisabledTags.new
register.disable("foo") do register.disable(%w(foo bar)) do
assert_equal true, register.disabled?("foo") 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
end end
def test_disables_nested_tags def test_disables_nested_tags
register = DisabledTags.new 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 true, register.disabled?("foo")
assert_equal false, register.disabled?("bar") assert_equal false, register.disabled?("bar")
end end
register.disable("bar") do register.disable(["bar"]) do
assert_equal true, register.disabled?("foo") assert_equal true, register.disabled?("foo")
assert_equal true, register.disabled?("bar") 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?("foo")
assert_equal true, register.disabled?("bar") assert_equal true, register.disabled?("bar")
end end