From a4bb8fb6a067dfc3f7126d535ccf320be80e81a8 Mon Sep 17 00:00:00 2001 From: Autumn Date: Sun, 23 Aug 2026 15:46:04 +0100 Subject: [bunnytask] improve to-do loading --- main.ha | 12 +----------- todo/load.ha | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 11 deletions(-) create mode 100644 todo/load.ha 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; +}; -- cgit v1.3