diff --git a/lib/liquid/parse_context.rb b/lib/liquid/parse_context.rb index ae2b3ee0..d8471475 100644 --- a/lib/liquid/parse_context.rb +++ b/lib/liquid/parse_context.rb @@ -30,7 +30,8 @@ module Liquid end def new_parser(input) - Parser.new(input, @string_scanner) + @string_scanner.string = input + Parser.new(@string_scanner) end def new_tokenizer(source, start_line_number: nil, for_liquid_tag: false) diff --git a/lib/liquid/parser.rb b/lib/liquid/parser.rb index a4f781d7..cba3dc7c 100644 --- a/lib/liquid/parser.rb +++ b/lib/liquid/parser.rb @@ -2,7 +2,8 @@ module Liquid class Parser - def initialize(input, string_scanner) + def initialize(input) + input = input.is_a?(StringScanner) ? input : StringScanner.new(input.to_s) @tokens = Lexer.tokenize(input, string_scanner) @p = 0 # pointer to current location end