style: Avoid deep nesting for parsing the liquid tag in the block body

This commit is contained in:
Dylan Thacker-Smith
2019-12-18 20:42:25 -05:00
parent f7ad602bfc
commit ef79fa3898
2 changed files with 10 additions and 10 deletions

View File

@@ -21,10 +21,6 @@ Lint/InheritException:
Layout/LineLength:
Max: 294
# Offense count: 1
Metrics/BlockNesting:
Max: 4
# Offense count: 44
Naming/ConstantName:
Exclude:
@@ -49,4 +45,4 @@ Style/ClassVars:
Exclude:
- 'lib/liquid/condition.rb'
- 'lib/liquid/strainer.rb'
- 'lib/liquid/template.rb'
- 'lib/liquid/template.rb'

View File

@@ -60,6 +60,14 @@ module Liquid
Usage.increment("liquid_tag_contains_outer_tag") unless $ERROR_INFO.is_a?(SyntaxError)
end
private def parse_liquid_tag(markup, parse_context, &block)
liquid_tag_tokenizer = Tokenizer.new(markup, line_number: parse_context.line_number, for_liquid_tag: true)
parse_for_liquid_tag(liquid_tag_tokenizer, parse_context) do |end_tag_name, end_tag_markup|
next unless end_tag_name
self.class.unknown_tag_in_liquid_tag(end_tag_name, end_tag_markup, &block)
end
end
private def parse_for_document(tokenizer, parse_context, &block)
while (token = tokenizer.shift)
next if token.empty?
@@ -79,11 +87,7 @@ module Liquid
end
if tag_name == 'liquid'
liquid_tag_tokenizer = Tokenizer.new(markup, line_number: parse_context.line_number, for_liquid_tag: true)
parse_for_liquid_tag(liquid_tag_tokenizer, parse_context) do |end_tag_name, end_tag_markup|
next unless end_tag_name
self.class.unknown_tag_in_liquid_tag(end_tag_name, end_tag_markup, &block)
end
parse_liquid_tag(markup, parse_context, &block)
next
end