Add support for parsing tasks from directory

This commit is contained in:
2025-01-15 12:14:37 +01:00
parent e13a188bb1
commit 6c09640118

47
src/notepad/index.ts Normal file
View File

@@ -0,0 +1,47 @@
import fs from "fs";
import readline from "readline";
import { Task } from "../types/task";
import { parse } from "../parser";
export async function readTasksFromDirectory(directory: string): Promise<Task[]> {
return walk(directory, readTasksFromFile);
}
export async function walk<T>(directory: string, visitor: (path: string) => Promise<T[]>): Promise<T[]> {
const list = [];
for(const file of fs.readdirSync(directory)) {
const path = `${directory}/${file}`;
if (fs.statSync(path).isDirectory()) {
const items = await walk(path, visitor);
list.push(...items);
} else {
const items = await visitor(path);
list.push(...items);
}
}
return list;
}
export async function readTasksFromFile(path: string): Promise<Task[]> {
const fileStream = fs.createReadStream(path);
const rl = readline.createInterface({
input: fileStream,
crlfDelay: Infinity
});
const list: Task[] = [];
for await (const line of rl) {
const task = parse(line);
if(task) {
list.push(task);
}
}
return list;
}