From a6dfb56a5cd2a6804b2a6a0a7a9bbec0fdace88f Mon Sep 17 00:00:00 2001 From: Mike Angell Date: Tue, 24 Sep 2019 00:20:51 +1000 Subject: [PATCH] Code improvements --- lib/liquid/block_body.rb | 2 +- lib/liquid/registers/disabled_tags.rb | 15 ++++++++------- lib/liquid/tag.rb | 10 ++++------ lib/liquid/tags/render.rb | 3 ++- lib/liquid/template.rb | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index 4867922..515bd85 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -154,7 +154,7 @@ module Liquid private def render_node(context, output, node) - node.disabled?(context, output) && return if node.is_a?(Tag) + return if node.is_a?(Tag) && node.disabled?(context, output) node.render_to_output_buffer(context, output) rescue UndefinedVariable, UndefinedDropMethod, UndefinedFilter => e context.handle_error(e, node.line_number) diff --git a/lib/liquid/registers/disabled_tags.rb b/lib/liquid/registers/disabled_tags.rb index ab2d786..79b6472 100644 --- a/lib/liquid/registers/disabled_tags.rb +++ b/lib/liquid/registers/disabled_tags.rb @@ -2,30 +2,31 @@ module Liquid class DisabledTags < Register def initialize - @disabled_tags = Hash.new { |h, k| h[k] = 0 } + @disabled_tags = {} end def disabled?(tag) - @disabled_tags[tag] > 0 + @disabled_tags.key?(tag) && @disabled_tags[tag] > 0 end def disable(tags) - tags.each { |tag| increment(tag) } + tags.each(&method(:increment)) yield ensure - tags.each { |tag| decrement(tag) } + tags.each(&method(:decrement)) end private def increment(tag) - @disabled_tags[tag] = @disabled_tags[tag] + 1 + @disabled_tags[tag] ||= 0 + @disabled_tags[tag] += 1 end def decrement(tag) - @disabled_tags[tag] = @disabled_tags[tag] - 1 + @disabled_tags[tag] -= 1 end end - Template.register_register('disabled_tags', DisabledTags.new) + Template.add_register('disabled_tags', DisabledTags.new) end diff --git a/lib/liquid/tag.rb b/lib/liquid/tag.rb index e40ad22..ce4404e 100644 --- a/lib/liquid/tag.rb +++ b/lib/liquid/tag.rb @@ -40,18 +40,16 @@ module Liquid def disabled?(context, output) if context.registers['disabled_tags']&.disabled?(tag_name) - output << disabled_response + output << disabled_error_message end end - def disabled_response + def disabled_error_message "#{tag_name} #{options[:locale].t('errors.disabled.tag')}" end - def disable_tags(context, tags) - context.registers['disabled_tags'].disable(tags) do - yield - end + def disable_tags(context, tags, &block) + context.registers['disabled_tags'].disable(tags, &block) end # For backwards compatibility with custom tags. In a future release, the semantics diff --git a/lib/liquid/tags/render.rb b/lib/liquid/tags/render.rb index b111876..e6cef97 100644 --- a/lib/liquid/tags/render.rb +++ b/lib/liquid/tags/render.rb @@ -3,6 +3,7 @@ module Liquid class Render < Tag SYNTAX = /(#{QuotedString})#{QuotedFragment}*/o + DISABLED_TAGS = %w(include) attr_reader :template_name_expr, :attributes @@ -22,7 +23,7 @@ module Liquid end def render_to_output_buffer(context, output) - disable_tags(context, %w(include)) do + disable_tags(context, DISABLED_TAGS) do render_tag(context, output) end end diff --git a/lib/liquid/template.rb b/lib/liquid/template.rb index 4a53ecf..2f0bed4 100644 --- a/lib/liquid/template.rb +++ b/lib/liquid/template.rb @@ -92,7 +92,7 @@ module Liquid @tags ||= TagRegistry.new end - def register_register(name, klass) + def add_register(name, klass) registers[name.to_s] = klass end