From 647296d5a0799c2e9de05cd41b50bd161cdeac85 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Fri, 19 Jun 2026 22:06:26 +0200 Subject: Add NorgLexer --- Sources/NorgKit/Parsers/BlockScanner.swift | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 Sources/NorgKit/Parsers/BlockScanner.swift (limited to 'Sources/NorgKit/Parsers/BlockScanner.swift') diff --git a/Sources/NorgKit/Parsers/BlockScanner.swift b/Sources/NorgKit/Parsers/BlockScanner.swift new file mode 100644 index 0000000..7552255 --- /dev/null +++ b/Sources/NorgKit/Parsers/BlockScanner.swift @@ -0,0 +1,21 @@ +/// Shared block-level lexical primitives. +enum BlockScanner { + + static let blockMarkers = ASCIIByteSet("*-~>") + static let rangeableMarkers = ASCIIByteSet("$^:") + + enum Delimiter { + case weak, strong, rule + } + + static func delimiter(_ s: Substring) -> Delimiter? { + guard s.count >= 2, let first = s.first, "-=_".contains(first), + s.allSatisfy({ $0 == first }) + else { return nil } + switch first { + case "-": return .weak + case "=": return .strong + default: return .rule + } + } +} -- cgit