feat: move from gray-matter to front-matter
This commit is contained in:
+16
-14
@@ -1,5 +1,6 @@
|
||||
import matter from "gray-matter";
|
||||
import { Task } from "@/model/task";
|
||||
import fm from "front-matter";
|
||||
import * as yaml from "js-yaml";
|
||||
import { Task, TaskPriority, TaskStatus } from "@/model/task";
|
||||
|
||||
function toISO(value: unknown): string {
|
||||
if (value instanceof Date) return value.toISOString();
|
||||
@@ -8,17 +9,18 @@ function toISO(value: unknown): string {
|
||||
}
|
||||
|
||||
export function parseTaskFile(content: string): Task {
|
||||
const parsed = matter(content);
|
||||
const parsed = fm<Record<string, unknown>>(content);
|
||||
const data = parsed.attributes;
|
||||
return {
|
||||
id: parsed.data.id,
|
||||
title: parsed.data.title,
|
||||
description: parsed.content.trim(),
|
||||
status: parsed.data.status ?? "todo",
|
||||
priority: parsed.data.priority ?? "medium",
|
||||
tags: parsed.data.tags ?? [],
|
||||
assignee: parsed.data.assignee ?? "",
|
||||
created: toISO(parsed.data.created),
|
||||
updated: toISO(parsed.data.updated),
|
||||
id: data.id as string,
|
||||
title: data.title as string,
|
||||
description: parsed.body.trim(),
|
||||
status: (data.status as TaskStatus) ?? "todo",
|
||||
priority: (data.priority as TaskPriority) ?? "medium",
|
||||
tags: (data.tags as string[]) ?? [],
|
||||
assignee: (data.assignee as string) ?? "",
|
||||
created: toISO(data.created),
|
||||
updated: toISO(data.updated),
|
||||
};
|
||||
}
|
||||
|
||||
@@ -34,6 +36,6 @@ export function serializeTask(task: Task): string {
|
||||
updated: task.updated,
|
||||
};
|
||||
|
||||
const content = matter.stringify(task.description, frontmatter);
|
||||
return content;
|
||||
const yamlStr = yaml.dump(frontmatter).trim();
|
||||
return `---\n${yamlStr}\n---\n${task.description}`;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user