removed unneeded changes

This commit is contained in:
Ilya Puchka
2017-12-26 21:32:28 +01:00
parent abeb30bb1c
commit cb124319ec
4 changed files with 25 additions and 41 deletions

View File

@@ -28,21 +28,22 @@ class ForNode : NodeType {
let forNodes = try parser.parse(until(["endfor", "empty"])) 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? let `where`: Expression?
if components.count >= 6 { if components.count >= 6 {
`where` = try parseExpression(components: Array(components.suffix(from: 5)), tokenParser: parser, token: token) `where` = try parseExpression(components: Array(components.suffix(from: 5)), tokenParser: parser, token: token)
} else { } else {
`where` = nil `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) return ForNode(resolvable: filter, loopVariables: loopVariables, nodes: forNodes, emptyNodes:emptyNodes, where: `where`, token: token)
} }

View File

@@ -226,18 +226,18 @@ class IfNode : NodeType {
var trueNodes = [NodeType]() var trueNodes = [NodeType]()
var falseNodes = [NodeType]() var falseNodes = [NodeType]()
let expression = try parseExpression(components: components, tokenParser: parser, token: token)
falseNodes = try parser.parse(until(["endif", "else"])) falseNodes = try parser.parse(until(["endif", "else"]))
if let token = parser.nextToken() { guard let token = parser.nextToken() else {
if token.contents == "else" {
trueNodes = try parser.parse(until(["endif"]))
_ = parser.nextToken()
}
} else {
throw TemplateSyntaxError("`endif` was not found.") 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: [ return IfNode(conditions: [
IfCondition(expression: expression, nodes: trueNodes), IfCondition(expression: expression, nodes: trueNodes),
IfCondition(expression: nil, nodes: falseNodes), IfCondition(expression: nil, nodes: falseNodes),

View File

@@ -56,24 +56,6 @@ struct Lexer {
return tokens 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 { class Scanner {

View File

@@ -54,9 +54,9 @@ public class TokenParser {
let node = try parser(self, token) let node = try parser(self, token)
nodes.append(node) nodes.append(node)
} catch { } catch {
if var syntaxError = error as? TemplateSyntaxError, syntaxError.token == nil { if var error = error as? TemplateSyntaxError {
syntaxError.token = token error.token = error.token ?? token
throw syntaxError throw error
} else { } else {
throw error throw error
} }
@@ -106,13 +106,14 @@ public class TokenParser {
do { do {
return try FilterExpression(token: filterToken, parser: self) return try FilterExpression(token: filterToken, parser: self)
} catch { } 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) { 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 { } else {
syntaxError.token = containingToken error.token = containingToken
} }
throw syntaxError throw error
} else { } else {
throw error throw error
} }