diff options
| author | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-19 22:06:26 +0200 |
|---|---|---|
| committer | Ruben Beltran del Rio <jj@r.bdr.sh> | 2026-06-19 22:15:42 +0200 |
| commit | 647296d5a0799c2e9de05cd41b50bd161cdeac85 (patch) | |
| tree | 61dd769ceadba7f139d2c299119e6b1b86d849ab /Sources/NorgKit/Parsers/BlockScanner.swift | |
| parent | c796b061f2d1a1da02c92b71d518af6cef16d33a (diff) | |
Diffstat (limited to 'Sources/NorgKit/Parsers/BlockScanner.swift')
| -rw-r--r-- | Sources/NorgKit/Parsers/BlockScanner.swift | 21 |
1 files changed, 21 insertions, 0 deletions
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 + } + } +} |