aboutsummaryrefslogtreecommitdiff
path: root/Sources/NorgKit/Parsers/BlockScanner.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <jj@r.bdr.sh>2026-06-19 22:06:26 +0200
committerRuben Beltran del Rio <jj@r.bdr.sh>2026-06-19 22:15:42 +0200
commit647296d5a0799c2e9de05cd41b50bd161cdeac85 (patch)
tree61dd769ceadba7f139d2c299119e6b1b86d849ab /Sources/NorgKit/Parsers/BlockScanner.swift
parentc796b061f2d1a1da02c92b71d518af6cef16d33a (diff)
Add NorgLexerHEAD1.1.0main
Diffstat (limited to 'Sources/NorgKit/Parsers/BlockScanner.swift')
-rw-r--r--Sources/NorgKit/Parsers/BlockScanner.swift21
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
+ }
+ }
+}