summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/nuldoc-src/ndoc
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-15 00:54:18 +0900
committernsfisis <nsfisis@gmail.com>2024-08-15 00:54:18 +0900
commitc75572765f5d2952a2c4f84160502a10497e9ead (patch)
treeb0f52f443f88ad7ddcfb0e99ea9dd3fd691754bf /vhosts/blog/nuldoc-src/ndoc
parentcd7b5dabb73cbb6751bd081e550fd648b0fce9c1 (diff)
downloadnsfisis.dev-c75572765f5d2952a2c4f84160502a10497e9ead.tar.gz
nsfisis.dev-c75572765f5d2952a2c4f84160502a10497e9ead.tar.zst
nsfisis.dev-c75572765f5d2952a2c4f84160502a10497e9ead.zip
refactor(blog/nuldoc): use zod schema
Diffstat (limited to 'vhosts/blog/nuldoc-src/ndoc')
-rw-r--r--vhosts/blog/nuldoc-src/ndoc/document.ts31
-rw-r--r--vhosts/blog/nuldoc-src/ndoc/parse.ts24
2 files changed, 24 insertions, 31 deletions
diff --git a/vhosts/blog/nuldoc-src/ndoc/document.ts b/vhosts/blog/nuldoc-src/ndoc/document.ts
index c99fb7f0..f1cdede9 100644
--- a/vhosts/blog/nuldoc-src/ndoc/document.ts
+++ b/vhosts/blog/nuldoc-src/ndoc/document.ts
@@ -3,6 +3,23 @@ import { Config } from "../config.ts";
import { DocBookError } from "../errors.ts";
import { Revision, stringToDate } from "../revision.ts";
import { Element, findFirstChildElement } from "../dom.ts";
+import { z } from "zod/mod.ts";
+
+export const PostMetadataSchema = z.object({
+ article: z.object({
+ uuid: z.string(),
+ title: z.string(),
+ description: z.string(),
+ tags: z.array(z.string()),
+ revisions: z.array(z.object({
+ date: z.string(),
+ remark: z.string(),
+ isInternal: z.boolean().optional(),
+ })),
+ }),
+});
+
+export type PostMetadata = z.infer<typeof PostMetadataSchema>;
export type Document = {
root: Element;
@@ -17,19 +34,7 @@ export type Document = {
export function createNewDocumentFromRootElement(
root: Element,
- meta: {
- article: {
- uuid: string;
- title: string;
- description: string;
- tags: string[];
- revisions: {
- date: string;
- remark: string;
- isInternal?: boolean;
- }[];
- };
- },
+ meta: PostMetadata,
sourceFilePath: string,
config: Config,
): Document {
diff --git a/vhosts/blog/nuldoc-src/ndoc/parse.ts b/vhosts/blog/nuldoc-src/ndoc/parse.ts
index 857c086c..d1557750 100644
--- a/vhosts/blog/nuldoc-src/ndoc/parse.ts
+++ b/vhosts/blog/nuldoc-src/ndoc/parse.ts
@@ -1,25 +1,13 @@
import { parse as parseToml } from "std/toml/mod.ts";
import { Config } from "../config.ts";
import { parseXmlString } from "../xml.ts";
-import { createNewDocumentFromRootElement, Document } from "./document.ts";
+import {
+ createNewDocumentFromRootElement,
+ Document,
+ PostMetadata,
+ PostMetadataSchema,
+} from "./document.ts";
import toHtml from "./to_html.ts";
-import { z } from "zod/mod.ts";
-
-const PostMetadataSchema = z.object({
- article: z.object({
- uuid: z.string(),
- title: z.string(),
- description: z.string(),
- tags: z.array(z.string()),
- revisions: z.array(z.object({
- date: z.string(),
- remark: z.string(),
- isInternal: z.boolean().optional(),
- })),
- }),
-});
-
-type PostMetadata = z.infer<typeof PostMetadataSchema>;
export async function parseNulDocFile(
filePath: string,