aboutsummaryrefslogtreecommitdiff
path: root/Sources/NorgEditor/Highlighting/NorgHighlighter.swift
blob: c8bd2de4e87733c4f0514b93abb48c32f9609150 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)
    }
  }
}