diff options
Diffstat (limited to 'Sources/NorgEditor/Highlighting/NorgHighlighter.swift')
| -rw-r--r-- | Sources/NorgEditor/Highlighting/NorgHighlighter.swift | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/Sources/NorgEditor/Highlighting/NorgHighlighter.swift b/Sources/NorgEditor/Highlighting/NorgHighlighter.swift new file mode 100644 index 0000000..c8bd2de --- /dev/null +++ b/Sources/NorgEditor/Highlighting/NorgHighlighter.swift @@ -0,0 +1,23 @@ +import Foundation +import NorgKit + +/// A syntax highlight span. +public struct NorgHighlight: Equatable, Sendable { + + public let range: NSRange + public let kind: NorgToken.Kind + + public init(range: NSRange, kind: NorgToken.Kind) { + self.range = range + self.kind = kind + } +} + +public enum NorgHighlighter { + + public static func highlights(in text: String) -> [NorgHighlight] { + NorgLexer.tokenize(text).map { token in + NorgHighlight(range: NSRange(token.range, in: text), kind: token.kind) + } + } +} |