From 60075ddda2e0ec618af17ff2a8f03d9bdd570436 Mon Sep 17 00:00:00 2001 From: Dylan Thacker-Smith Date: Mon, 7 Sep 2020 21:03:20 -0400 Subject: [PATCH] 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 8338b06..7482b81 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 Liquid::BlockBody.new 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