From ef79fa3898c59ef930918e5b15d62fd7c372ed39 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Wed, 18 Dec 2019 20:42:25 -0500 Subject: [PATCH] style: Avoid deep nesting for parsing the liquid tag in the block body --- .rubocop_todo.yml | 6 +----- lib/liquid/block_body.rb | 14 +++++++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.rubocop_todo.yml b/.rubocop_todo.yml index 742b1de..b2a81a9 100644 --- a/.rubocop_todo.yml +++ b/.rubocop_todo.yml @@ -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' \ No newline at end of file diff --git a/lib/liquid/block_body.rb b/lib/liquid/block_body.rb index 879f000..467bbdd 100644 --- a/lib/liquid/block_body.rb +++ b/lib/liquid/block_body.rb @@ -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