removed unneeded changes
This commit is contained in:
@@ -28,21 +28,22 @@ class ForNode : NodeType {
|
||||
|
||||
let forNodes = try parser.parse(until(["endfor", "empty"]))
|
||||
|
||||
if let token = parser.nextToken() {
|
||||
if token.contents == "empty" {
|
||||
emptyNodes = try parser.parse(until(["endfor"]))
|
||||
_ = parser.nextToken()
|
||||
}
|
||||
} else {
|
||||
throw TemplateSyntaxError("`endfor` was not found.")
|
||||
}
|
||||
|
||||
let `where`: Expression?
|
||||
if components.count >= 6 {
|
||||
`where` = try parseExpression(components: Array(components.suffix(from: 5)), tokenParser: parser, token: token)
|
||||
} else {
|
||||
`where` = nil
|
||||
}
|
||||
|
||||
guard let token = parser.nextToken() else {
|
||||
throw TemplateSyntaxError("`endfor` was not found.")
|
||||
}
|
||||
|
||||
if token.contents == "empty" {
|
||||
emptyNodes = try parser.parse(until(["endfor"]))
|
||||
_ = parser.nextToken()
|
||||
}
|
||||
|
||||
return ForNode(resolvable: filter, loopVariables: loopVariables, nodes: forNodes, emptyNodes:emptyNodes, where: `where`, token: token)
|
||||
}
|
||||
|
||||
|
||||
@@ -226,18 +226,18 @@ class IfNode : NodeType {
|
||||
var trueNodes = [NodeType]()
|
||||
var falseNodes = [NodeType]()
|
||||
|
||||
let expression = try parseExpression(components: components, tokenParser: parser, token: token)
|
||||
falseNodes = try parser.parse(until(["endif", "else"]))
|
||||
|
||||
if let token = parser.nextToken() {
|
||||
if token.contents == "else" {
|
||||
trueNodes = try parser.parse(until(["endif"]))
|
||||
_ = parser.nextToken()
|
||||
}
|
||||
} else {
|
||||
guard let token = parser.nextToken() else {
|
||||
throw TemplateSyntaxError("`endif` was not found.")
|
||||
}
|
||||
|
||||
let expression = try parseExpression(components: components, tokenParser: parser, token: token)
|
||||
if token.contents == "else" {
|
||||
trueNodes = try parser.parse(until(["endif"]))
|
||||
_ = parser.nextToken()
|
||||
}
|
||||
|
||||
return IfNode(conditions: [
|
||||
IfCondition(expression: expression, nodes: trueNodes),
|
||||
IfCondition(expression: nil, nodes: falseNodes),
|
||||
|
||||
@@ -56,24 +56,6 @@ struct Lexer {
|
||||
return tokens
|
||||
}
|
||||
|
||||
func tokenLine(_ token: Token) -> (content: String, number: Int, offset: String.IndexDistance) {
|
||||
var lineNumber: Int = 0
|
||||
var offset = 0
|
||||
var lineContent = ""
|
||||
|
||||
for line in templateString.components(separatedBy: CharacterSet.newlines) {
|
||||
lineNumber += 1
|
||||
lineContent = line
|
||||
if let rangeOfLine = templateString.range(of: line), rangeOfLine.contains(token.range.lowerBound) {
|
||||
offset = templateString.distance(from: rangeOfLine.lowerBound, to:
|
||||
token.range.lowerBound)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return (lineContent, lineNumber, offset)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
class Scanner {
|
||||
|
||||
@@ -54,9 +54,9 @@ public class TokenParser {
|
||||
let node = try parser(self, token)
|
||||
nodes.append(node)
|
||||
} catch {
|
||||
if var syntaxError = error as? TemplateSyntaxError, syntaxError.token == nil {
|
||||
syntaxError.token = token
|
||||
throw syntaxError
|
||||
if var error = error as? TemplateSyntaxError {
|
||||
error.token = error.token ?? token
|
||||
throw error
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
@@ -106,13 +106,14 @@ public class TokenParser {
|
||||
do {
|
||||
return try FilterExpression(token: filterToken, parser: self)
|
||||
} catch {
|
||||
if var syntaxError = error as? TemplateSyntaxError, syntaxError.token == nil {
|
||||
if var error = error as? TemplateSyntaxError, error.token == nil {
|
||||
// find range of filter in the containing token so that only filter is highligted, not the whole token
|
||||
if let filterTokenRange = environment.template?.templateString.range(of: filterToken, range: containingToken.range) {
|
||||
syntaxError.token = Token.block(value: filterToken, at: filterTokenRange)
|
||||
error.token = Token.variable(value: filterToken, at: filterTokenRange)
|
||||
} else {
|
||||
syntaxError.token = containingToken
|
||||
error.token = containingToken
|
||||
}
|
||||
throw syntaxError
|
||||
throw error
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user