diff options
Diffstat (limited to 'nuldoc-src')
| -rw-r--r-- | nuldoc-src/commands/build.ts | 7 | ||||
| -rw-r--r-- | nuldoc-src/pages/not_found.ts | 51 |
2 files changed, 58 insertions, 0 deletions
diff --git a/nuldoc-src/commands/build.ts b/nuldoc-src/commands/build.ts index ef529e0..d523861 100644 --- a/nuldoc-src/commands/build.ts +++ b/nuldoc-src/commands/build.ts @@ -6,6 +6,7 @@ import { parseDocBookFile } from "../docbook/parse.ts"; import { Page } from "../page.ts"; import { render } from "../render.ts"; import { generateAboutPage } from "../pages/about.ts"; +import { generateNotFoundPage } from "../pages/not_found.ts"; import { generatePostPage, getPostCreatedDate, @@ -19,6 +20,7 @@ export async function runBuildCommand(config: Config) { await buildPostListPage(posts, config); await buildTagPages(posts, config); await buildAboutPage(config); + await buildNotFoundPage(config); await copyStaticFiles(config); } @@ -64,6 +66,11 @@ async function buildAboutPage(config: Config) { await writePage(aboutPage, config); } +async function buildNotFoundPage(config: Config) { + const notFoundPage = await generateNotFoundPage(config); + await writePage(notFoundPage, config); +} + async function buildTagPages(posts: PostPage[], config: Config) { const tagsAndPosts = collectTags(posts); for (const [tag, posts] of tagsAndPosts) { diff --git a/nuldoc-src/pages/not_found.ts b/nuldoc-src/pages/not_found.ts new file mode 100644 index 0000000..65938dd --- /dev/null +++ b/nuldoc-src/pages/not_found.ts @@ -0,0 +1,51 @@ +import { globalFooter } from "../components/global_footer.ts"; +import { globalHeader } from "../components/global_header.ts"; +import { pageLayout } from "../components/page_layout.ts"; +import { Config } from "../config.ts"; +import { el, text } from "../dom.ts"; +import { Page } from "../page.ts"; + +export type NotFoundPage = Page; + +export async function generateNotFoundPage( + config: Config, +): Promise<NotFoundPage> { + const body = el( + "body", + [["class", "single"]], + globalHeader(config), + el( + "main", + [["class", "main"]], + el( + "article", + [], + el( + "div", + [["class", "not-found"]], + text("404"), + ), + ), + ), + globalFooter(config), + ); + + const html = await pageLayout( + { + metaCopyrightYear: config.blog.siteCopyrightYear, + metaDescription: "リクエストされたページが見つかりません。", + metaKeywords: [], + metaTitle: "Page Not Found", + requiresSyntaxHighlight: false, + }, + body, + config, + ); + + return { + root: el("__root__", [], html), + renderer: "html", + destFilePath: "/404.html", + href: "/404.html", + }; +} |
