Skip to content

Commit 8e1e7b6

Browse files
committed
remove parsing methods on Environment in favour of TokenParser methods
1 parent 8cd8639 commit 8e1e7b6

File tree

3 files changed

+11
-16
lines changed

3 files changed

+11
-16
lines changed

Sources/IfTag.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ final class IfExpressionParser {
100100
let tokens: [IfToken]
101101
var position: Int = 0
102102

103-
init(components: [String], environment: Environment) throws {
103+
init(components: [String], parser: TokenParser) throws {
104104
self.tokens = try components.map { component in
105105
if let op = findOperator(name: component) {
106106
switch op {
@@ -111,7 +111,7 @@ final class IfExpressionParser {
111111
}
112112
}
113113

114-
return .variable(try environment.compileResolvable(component))
114+
return .variable(try parser.compileResolvable(component))
115115
}
116116
}
117117

Sources/Parser.swift

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Sources/Variable.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ class FilterExpression : Resolvable {
88
let filters: [(FilterType, [Variable])]
99
let variable: Variable
1010

11-
init(token: String, environment: Environment) throws {
11+
init(token: String, parser: TokenParser) throws {
1212
let bits = token.smartSplit(separator: "|").map({ String($0).trim(character: " ") })
1313
if bits.isEmpty {
1414
filters = []
@@ -22,7 +22,7 @@ class FilterExpression : Resolvable {
2222
do {
2323
filters = try filterBits.map {
2424
let (name, arguments) = parseFilterComponents(token: $0)
25-
let filter = try environment.findFilter(name)
25+
let filter = try parser.findFilter(name)
2626
return (filter, arguments)
2727
}
2828
} catch {

0 commit comments

Comments
 (0)