@@ -40,8 +40,7 @@ public class TokenParser {
4040 case . text( let text) :
4141 nodes. append ( TextNode ( text: text) )
4242 case . variable:
43- let variable = try environment. compileResolvable ( token. contents)
44- nodes. append ( VariableNode ( variable: variable) )
43+ nodes. append ( VariableNode ( variable: try compileResolvable ( token. contents) ) )
4544 case . block:
4645 if let parse_until = parse_until , parse_until ( self , token) {
4746 prependToken ( token)
@@ -72,12 +71,16 @@ public class TokenParser {
7271 tokens. insert ( token, at: 0 )
7372 }
7473
74+ func findFilter( _ name: String ) throws -> FilterType {
75+ return try environment. findFilter ( name)
76+ }
77+
7578 public func compileFilter( _ token: String ) throws -> Resolvable {
76- return try FilterExpression ( token: token, environment : environment )
79+ return try FilterExpression ( token: token, parser : self )
7780 }
7881
7982 func compileExpression( components: [ String ] ) throws -> Expression {
80- return try IfExpressionParser ( components: components, environment : environment ) . parse ( )
83+ return try IfExpressionParser ( components: components, parser : self ) . parse ( )
8184 }
8285
8386 public func compileResolvable( _ token: String ) throws -> Resolvable {
@@ -128,14 +131,6 @@ extension Environment {
128131 return filtersWithDistance. filter ( { $0. distance == minDistance } ) . map ( { $0. filterName } )
129132 }
130133
131- public func compileFilter( _ token: String ) throws -> Resolvable {
132- return try FilterExpression ( token: token, environment: self )
133- }
134-
135- public func compileResolvable( _ token: String ) throws -> Resolvable {
136- return try TokenParser ( tokens: [ ] , environment: self ) . compileResolvable ( token)
137- }
138-
139134}
140135
141136// https://en.wikipedia.org/wiki/Levenshtein_distance#Iterative_with_two_matrix_rows
0 commit comments