From 86b47ba28b4dd660c0a5a2c3b9292be5c93b5138 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Mon, 7 Sep 2020 21:03:20 -0400 Subject: [PATCH 1/2] Pass the tag markup and tokenizer to Document#unknown_tag The parse_context no longer needs to be passed in because it is available through through an attr_reader on the instance. However, the markup and tokenizer weren't made available. This refactor also makes the parameters given to Document#unknown_tag consistent with Block#unknown_tag. --- lib/liquid/document.rb | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/lib/liquid/document.rb b/lib/liquid/document.rb index e0818ec..2e47ffb 100644 --- a/lib/liquid/document.rb +++ b/lib/liquid/document.rb @@ -19,16 +19,15 @@ module Liquid @body.nodelist end - def parse(tokens, parse_context) - @body.parse(tokens, parse_context) do |end_tag_name, _end_tag_params| - unknown_tag(end_tag_name, parse_context) if end_tag_name + def parse(tokenizer, parse_context) + while parse_body(tokenizer) end rescue SyntaxError => e e.line_number ||= parse_context.line_number raise end - def unknown_tag(tag, parse_context) + def unknown_tag(tag, _markup, _tokenizer) case tag when 'else', 'end' raise SyntaxError, parse_context.locale.t("errors.syntax.unexpected_outer_tag", tag: tag) @@ -50,5 +49,16 @@ module Liquid def new_body parse_context.new_block_body end + + def parse_body(tokenizer) + @body.parse(tokenizer, parse_context) do |unknown_tag_name, unknown_tag_markup| + if unknown_tag_name + unknown_tag(unknown_tag_name, unknown_tag_markup, tokenizer) + true + else + false + end + end + end end end From 0d02dea20b7b84bfb297bc9b9048633cdf9597f3 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Wed, 2 Sep 2020 15:26:45 -0400 Subject: [PATCH 2/2] Rename Liquid::Block#unknown_tag parameters for clarity --- lib/liquid/block.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/liquid/block.rb b/lib/liquid/block.rb index e0ad332..e6dac4d 100644 --- a/lib/liquid/block.rb +++ b/lib/liquid/block.rb @@ -28,8 +28,8 @@ module Liquid @body.nodelist end - def unknown_tag(tag, _params, _tokens) - Block.raise_unknown_tag(tag, block_name, block_delimiter, parse_context) + def unknown_tag(tag_name, _markup, _tokenizer) + Block.raise_unknown_tag(tag_name, block_name, block_delimiter, parse_context) end # @api private