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/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 42cc613..6328be5 100644 --- a/test/unit/template_unit_test.rb +++ b/test/unit/template_unit_test.rb @@ -67,4 +67,12 @@ 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"]) + ensure + Template.tags.delete('fake') + end end