aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAutumn2026-08-23 15:46:04 +0100
committerAutumn2026-08-23 15:47:06 +0100
commita4bb8fb6a067dfc3f7126d535ccf320be80e81a8 (patch)
tree1f450d82b58beef62eeebc89fdf70f17cbea0ea8
parent24c2030e6d01218d1c65cd9f47b57b39b2d00c66 (diff)
[bunnytask] improve to-do loading
-rw-r--r--main.ha12
-rw-r--r--todo/load.ha18
2 files changed, 19 insertions, 11 deletions
diff --git a/main.ha b/main.ha
index f721c22..8f74c7b 100644
--- a/main.ha
+++ b/main.ha
@@ -16,19 +16,9 @@ export fn main() void = {
const todo_files = config.files;
// load todos
- let todos: []str = [];
+ let todos = todo::loadall(todo_files)!;
defer strings::freeall(todos);
- // TODO simplify this
- for (let file .. todo_files) {
- match (todo::open(file)) {
- case let todo_items: []str =>
- for (let todo .. todo_items) append(todos, todo)!;
- free(todo_items);
- case let err: fs::error => fmt::fatalf("Error opening {}: {}", file, fs::strerror(err));
- };
- };
-
// print todos
fmt::println("To-dos:")!;
diff --git a/todo/load.ha b/todo/load.ha
new file mode 100644
index 0000000..4931c74
--- /dev/null
+++ b/todo/load.ha
@@ -0,0 +1,18 @@
+use fmt;
+use fs;
+
+export fn loadall(files: []str) ([]str | nomem) = {
+
+ let tasks: []str = [];
+
+ for (let file .. files) {
+ match (open(file)) {
+ case let file_tasks: []str =>
+ for (let task .. file_tasks) append(tasks, task)?;
+ free(file_tasks);
+ case let err: fs::error => fmt::fatalf("Error opening {}: {}", file, fs::strerror(err));
+ };
+ };
+
+ return tasks;
+};