Code improvements

This commit is contained in:
Mike Angell
2019-09-24 00:20:51 +10:00
parent 9f03dff79a
commit a6dfb56a5c
5 changed files with 16 additions and 16 deletions

View File

@@ -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)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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