aboutsummaryrefslogtreecommitdiff
path: root/Sources/NorgKit/Models/NorgDocument.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Sources/NorgKit/Models/NorgDocument.swift')
-rw-r--r--Sources/NorgKit/Models/NorgDocument.swift16
1 files changed, 16 insertions, 0 deletions
diff --git a/Sources/NorgKit/Models/NorgDocument.swift b/Sources/NorgKit/Models/NorgDocument.swift
new file mode 100644
index 0000000..73a3ed6
--- /dev/null
+++ b/Sources/NorgKit/Models/NorgDocument.swift
@@ -0,0 +1,16 @@
+/// A fully parsed Norg document.
+public struct NorgDocument: Equatable, Hashable, Sendable, Codable {
+
+ /// The parsed blocks, as a flat list.
+ public var blocks: [NorgBlock]
+
+ /// Given an array of parsed blocks, create a document.
+ public init(blocks: [NorgBlock] = []) {
+ self.blocks = blocks
+ }
+
+ /// Converts the flat document into a tree.
+ public func tree() -> [NorgNode] {
+ TreeFolder(blocks).fold()
+ }
+}