|
@@ -43,10 +43,14 @@ final class SubTask {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+struct Tag : Codable, Identifiable {
|
|
|
|
|
+ var id: String
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
@Model
|
|
@Model
|
|
|
final class Task {
|
|
final class Task {
|
|
|
var name: String
|
|
var name: String
|
|
|
- var tags: [String] = []
|
|
|
|
|
|
|
+ var tags: [Tag] = []
|
|
|
var subtasks: [SubTask] = []
|
|
var subtasks: [SubTask] = []
|
|
|
var notes: String = ""
|
|
var notes: String = ""
|
|
|
var status: Status = Status.Default
|
|
var status: Status = Status.Default
|
|
@@ -58,7 +62,8 @@ final class Task {
|
|
|
func yaml(_ indent: Int = 0) -> String {
|
|
func yaml(_ indent: Int = 0) -> String {
|
|
|
let h1 = String(repeating: " ", count: indent)
|
|
let h1 = String(repeating: " ", count: indent)
|
|
|
let h2 = String(repeating: " ", count: indent + 1)
|
|
let h2 = String(repeating: " ", count: indent + 1)
|
|
|
- var rval = " [\(status.rawValue)] \(name) (\(tags.joined(separator: " ")))\n"
|
|
|
|
|
|
|
+ var rval = h1 + "[\(status.rawValue)] \(name) "
|
|
|
|
|
+ rval += "(\(tags.map(\.id).joined(separator: " ")))\n"
|
|
|
if !notes.isEmpty {
|
|
if !notes.isEmpty {
|
|
|
rval += h2 + "# " + notes.replacingOccurrences(of: "\n", with: "\n" + h2 + "# ")
|
|
rval += h2 + "# " + notes.replacingOccurrences(of: "\n", with: "\n" + h2 + "# ")
|
|
|
}
|
|
}
|