Move safe_parse_expression into Parser.expression_node

- Make `Parser` accept the expression cache
- Remove `safe_parse_expression` from `ParseContext`
- Replace all usage of `safe_parse_expression` with `parser.expression_node`
This commit is contained in:
Charles-P. Clermont
2026-01-26 16:52:17 -05:00
parent 851584327a
commit cf3d845315
12 changed files with 66 additions and 49 deletions
+9 -3
View File
@@ -2,9 +2,10 @@
module Liquid
class Parser
def initialize(input)
ss = input.is_a?(StringScanner) ? input : StringScanner.new(input)
@tokens = Lexer.tokenize(ss)
def initialize(input, expression_cache = nil)
@ss = input.is_a?(StringScanner) ? input : StringScanner.new(input)
@cache = expression_cache
@tokens = Lexer.tokenize(@ss)
@p = 0 # pointer to current location
end
@@ -71,6 +72,11 @@ module Liquid
end
end
def expression_node
expr = expression
Expression.parse(expr, @ss, @cache)
end
def argument
str = +""
# might be a keyword argument (identifier: expression)