update lexer to swift 4
This commit is contained in:
@@ -67,7 +67,7 @@ open class SimpleErrorReporter: ErrorReporter {
|
|||||||
func describe(token: Token) -> String {
|
func describe(token: Token) -> String {
|
||||||
let templateName = token.sourceMap.filename ?? ""
|
let templateName = token.sourceMap.filename ?? ""
|
||||||
let location = token.sourceMap.location
|
let location = token.sourceMap.location
|
||||||
let highlight = "\(String(Array(repeating: " ", count: location.lineOffset)))^\(String(Array(repeating: "~", count: max(token.contents.characters.count - 1, 0))))"
|
let highlight = "\(String(Array(repeating: " ", count: location.lineOffset)))^\(String(Array(repeating: "~", count: max(token.contents.count - 1, 0))))"
|
||||||
|
|
||||||
return "\(templateName)\(location.lineNumber):\(location.lineOffset): error: \(templateError.reason)\n"
|
return "\(templateName)\(location.lineNumber):\(location.lineOffset): error: \(templateError.reason)\n"
|
||||||
+ "\(location.content)\n"
|
+ "\(location.content)\n"
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ struct Lexer {
|
|||||||
self.templateName = templateName
|
self.templateName = templateName
|
||||||
self.templateString = templateString
|
self.templateString = templateString
|
||||||
|
|
||||||
self.lines = templateString.components(separatedBy: .newlines).enumerated().flatMap {
|
self.lines = templateString.components(separatedBy: .newlines).enumerated().compactMap {
|
||||||
guard !$0.element.isEmpty else { return nil }
|
guard !$0.element.isEmpty else { return nil }
|
||||||
return (content: $0.element, number: UInt($0.offset + 1), templateString.range(of: $0.element)!)
|
return (content: $0.element, number: UInt($0.offset + 1), templateString.range(of: $0.element)!)
|
||||||
}
|
}
|
||||||
@@ -19,7 +19,7 @@ struct Lexer {
|
|||||||
|
|
||||||
func createToken(string: String, at range: Range<String.Index>) -> Token {
|
func createToken(string: String, at range: Range<String.Index>) -> Token {
|
||||||
func strip() -> String {
|
func strip() -> String {
|
||||||
guard string.characters.count > 4 else { return "" }
|
guard string.count > 4 else { return "" }
|
||||||
let start = string.index(string.startIndex, offsetBy: 2)
|
let start = string.index(string.startIndex, offsetBy: 2)
|
||||||
let end = string.index(string.endIndex, offsetBy: -2)
|
let end = string.index(string.endIndex, offsetBy: -2)
|
||||||
let trimmed = String(string[start..<end])
|
let trimmed = String(string[start..<end])
|
||||||
@@ -114,14 +114,14 @@ class Scanner {
|
|||||||
|
|
||||||
range = range.upperBound..<range.upperBound
|
range = range.upperBound..<range.upperBound
|
||||||
while index != content.endIndex {
|
while index != content.endIndex {
|
||||||
let substring = content.substring(from: index)
|
let substring = String(content[index...])
|
||||||
|
|
||||||
if substring.hasPrefix(until) {
|
if substring.hasPrefix(until) {
|
||||||
let result = content.substring(to: index)
|
let result = String(content[..<index])
|
||||||
|
|
||||||
if returnUntil {
|
if returnUntil {
|
||||||
range = range.lowerBound..<originalContent.index(range.upperBound, offsetBy: until.characters.count)
|
range = range.lowerBound..<originalContent.index(range.upperBound, offsetBy: until.count)
|
||||||
content = substring.substring(from: until.endIndex)
|
content = String(substring[until.endIndex...])
|
||||||
return result + until
|
return result + until
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -145,10 +145,10 @@ class Scanner {
|
|||||||
var index = content.startIndex
|
var index = content.startIndex
|
||||||
range = range.upperBound..<range.upperBound
|
range = range.upperBound..<range.upperBound
|
||||||
while index != content.endIndex {
|
while index != content.endIndex {
|
||||||
let substring = content.substring(from: index)
|
let substring = String(content[index...])
|
||||||
for string in until {
|
for string in until {
|
||||||
if substring.hasPrefix(string) {
|
if substring.hasPrefix(string) {
|
||||||
let result = content.substring(to: index)
|
let result = String(content[..<index])
|
||||||
content = substring
|
content = substring
|
||||||
return (string, result)
|
return (string, result)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user