diff --git a/MongoView/Synax Highlighting/JavaScriptHighlighter.swift b/MongoView/Synax Highlighting/JavaScriptHighlighter.swift index 9ef25fe..6ccdbd4 100644 --- a/MongoView/Synax Highlighting/JavaScriptHighlighter.swift +++ b/MongoView/Synax Highlighting/JavaScriptHighlighter.swift @@ -77,8 +77,25 @@ class JavaScriptHighlighter { return attributed } + + private func emit(token: TokenType, range: NSRange) { + let color: NSColor + switch token { + case .string: + color = .systemRed + case .number: + color = .systemBlue + case .punctuation: + color = .systemTeal + case .identifier: + return + } + attributed.addAttribute(.foregroundColor, value: color, range: range) + } private func consumeExpression() { + consumeWhitespace() + guard let char = peek() else { return } if identifierStarts.contains(char) { @@ -103,6 +120,13 @@ class JavaScriptHighlighter { consume() } } + + private func consumeWhitespace(newlines: Bool = false) { + let charSet = newlines ? CharacterSet.whitespacesAndNewlines : .whitespaces + while let char = peek(), charSet.contains(char) { + consume() + } + } private func consumeIdentifier() { let identifierStart = currentIndex! @@ -124,7 +148,7 @@ class JavaScriptHighlighter { } } print("Number: \(text[numberStart..