From 6adc431a19f59a68cd487242c537ba96c82e3dc7 Mon Sep 17 00:00:00 2001 From: Gaurav Chande Date: Fri, 22 Apr 2016 17:16:17 -0400 Subject: [PATCH 1/2] Make tag registry enumerable --- lib/liquid/template.rb | 6 ++++++ test/unit/template_unit_test.rb | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/lib/liquid/template.rb b/lib/liquid/template.rb index 9b82241..40985ed 100644 --- a/lib/liquid/template.rb +++ b/lib/liquid/template.rb @@ -19,6 +19,8 @@ module Liquid @@file_system = BlankFileSystem.new class TagRegistry + include Enumerable + def initialize @tags = {} @cache = {} @@ -41,6 +43,10 @@ module Liquid @cache.delete(tag_name) end + def each(&block) + @tags.each(&block) + end + private def lookup_class(name) diff --git a/test/unit/template_unit_test.rb b/test/unit/template_unit_test.rb index 42cc613..26c084a 100644 --- a/test/unit/template_unit_test.rb +++ b/test/unit/template_unit_test.rb @@ -67,4 +67,10 @@ class TemplateUnitTest < Minitest::Test Template.tags.delete('fake') assert_nil Template.tags['fake'] end + + def test_tags_can_be_looped_over + Template.register_tag('fake', FakeTag) + result = Template.tags.map { |name, klass| [name, klass] } + assert result.include?(["fake", "TemplateUnitTest::FakeTag"]) + end end From 5bb211d933911e84f8c75da5c292fcac48d9449c Mon Sep 17 00:00:00 2001 From: Gaurav Chande Date: Mon, 25 Apr 2016 11:50:46 -0400 Subject: [PATCH 2/2] Ensure no tag leakage since registry is global --- test/unit/block_unit_test.rb | 2 ++ test/unit/template_unit_test.rb | 2 ++ 2 files changed, 4 insertions(+) diff --git a/test/unit/block_unit_test.rb b/test/unit/block_unit_test.rb index 106c4d4..6a27a7d 100644 --- a/test/unit/block_unit_test.rb +++ b/test/unit/block_unit_test.rb @@ -46,6 +46,8 @@ class BlockUnitTest < Minitest::Test def test_with_custom_tag Liquid::Template.register_tag("testtag", Block) assert Liquid::Template.parse("{% testtag %} {% endtesttag %}") + ensure + Liquid::Template.tags.delete('testtag') end private diff --git a/test/unit/template_unit_test.rb b/test/unit/template_unit_test.rb index 26c084a..6328be5 100644 --- a/test/unit/template_unit_test.rb +++ b/test/unit/template_unit_test.rb @@ -72,5 +72,7 @@ class TemplateUnitTest < Minitest::Test Template.register_tag('fake', FakeTag) result = Template.tags.map { |name, klass| [name, klass] } assert result.include?(["fake", "TemplateUnitTest::FakeTag"]) + ensure + Template.tags.delete('fake') end end