From c75572765f5d2952a2c4f84160502a10497e9ead Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 15 Aug 2024 00:54:18 +0900 Subject: refactor(blog/nuldoc): use zod schema --- vhosts/blog/nuldoc-src/ndoc/document.ts | 31 ++++++++++++++++++------------- vhosts/blog/nuldoc-src/ndoc/parse.ts | 24 ++++++------------------ 2 files changed, 24 insertions(+), 31 deletions(-) (limited to 'vhosts/blog/nuldoc-src') 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; 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; export async function parseNulDocFile( filePath: string, -- cgit v1.2.3-70-g09d2