diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-08-15 00:54:18 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-08-15 00:54:18 +0900 |
| commit | c75572765f5d2952a2c4f84160502a10497e9ead (patch) | |
| tree | b0f52f443f88ad7ddcfb0e99ea9dd3fd691754bf /vhosts/blog/nuldoc-src/ndoc | |
| parent | cd7b5dabb73cbb6751bd081e550fd648b0fce9c1 (diff) | |
| download | nsfisis.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.ts | 31 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/ndoc/parse.ts | 24 |
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, |
