diff options
| author | nsfisis <nsfisis@gmail.com> | 2025-11-27 06:29:01 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2025-11-27 06:29:01 +0900 |
| commit | 83b1286354e0f5e83927c8fb35a584e587b5530b (patch) | |
| tree | f8771f7808cd68b295c9e57051b7604de15fe8c8 /services/nuldoc/nuldoc-src/components | |
| parent | 327622573dcb8879b9dba934792403a9fb7239a7 (diff) | |
| download | nsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.tar.gz nsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.tar.zst nsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.zip | |
refactor(nuldoc): Refactor elem()
Diffstat (limited to 'services/nuldoc/nuldoc-src/components')
13 files changed, 106 insertions, 123 deletions
diff --git a/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts index b6ef84c..df43793 100644 --- a/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts +++ b/services/nuldoc/nuldoc-src/components/AboutGlobalHeader.ts @@ -1,15 +1,12 @@ import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { a, div, Element, header } from "../dom.ts"; export default function GlobalHeader({ config }: { config: Config }): Element { - return elem( - "header", + return header( { class: "header" }, - elem( - "div", + div( { class: "site-logo" }, - elem( - "a", + a( { href: `https://${config.sites.default.fqdn}/` }, "nsfisis.dev", ), diff --git a/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts index 034c2ab..ae0fc13 100644 --- a/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts +++ b/services/nuldoc/nuldoc-src/components/BlogGlobalHeader.ts @@ -1,33 +1,27 @@ import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { a, div, Element, header, li, nav, ul } from "../dom.ts"; export default function GlobalHeader({ config }: { config: Config }): Element { - return elem( - "header", + return header( { class: "header" }, - elem( - "div", + div( { class: "site-logo" }, - elem( - "a", + a( { href: `https://${config.sites.default.fqdn}/` }, "nsfisis.dev", ), ), - elem("div", { class: "site-name" }, config.sites.blog.siteName), - elem( - "nav", + div({ class: "site-name" }, config.sites.blog.siteName), + nav( { class: "nav" }, - elem( - "ul", + ul( {}, - elem( - "li", + li( {}, - elem("a", { href: `https://${config.sites.about.fqdn}/` }, "About"), + a({ href: `https://${config.sites.about.fqdn}/` }, "About"), ), - elem("li", {}, elem("a", { href: "/posts/" }, "Posts")), - elem("li", {}, elem("a", { href: "/tags/" }, "Tags")), + li({}, a({ href: "/posts/" }, "Posts")), + li({}, a({ href: "/tags/" }, "Tags")), ), ), ); diff --git a/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts index b6ef84c..df43793 100644 --- a/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts +++ b/services/nuldoc/nuldoc-src/components/DefaultGlobalHeader.ts @@ -1,15 +1,12 @@ import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { a, div, Element, header } from "../dom.ts"; export default function GlobalHeader({ config }: { config: Config }): Element { - return elem( - "header", + return header( { class: "header" }, - elem( - "div", + div( { class: "site-logo" }, - elem( - "a", + a( { href: `https://${config.sites.default.fqdn}/` }, "nsfisis.dev", ), diff --git a/services/nuldoc/nuldoc-src/components/GlobalFooter.ts b/services/nuldoc/nuldoc-src/components/GlobalFooter.ts index 835d73f..313a01c 100644 --- a/services/nuldoc/nuldoc-src/components/GlobalFooter.ts +++ b/services/nuldoc/nuldoc-src/components/GlobalFooter.ts @@ -1,9 +1,8 @@ import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { Element, footer } from "../dom.ts"; export default function GlobalFooter({ config }: { config: Config }): Element { - return elem( - "footer", + return footer( { class: "footer" }, `© ${config.site.copyrightYear} ${config.site.author}`, ); diff --git a/services/nuldoc/nuldoc-src/components/PageLayout.ts b/services/nuldoc/nuldoc-src/components/PageLayout.ts index 19a8e86..f970c0b 100644 --- a/services/nuldoc/nuldoc-src/components/PageLayout.ts +++ b/services/nuldoc/nuldoc-src/components/PageLayout.ts @@ -1,5 +1,5 @@ import { Config } from "../config.ts"; -import { elem, Element, Node } from "../dom.ts"; +import { elem, Element, link, meta, Node } from "../dom.ts"; import StaticStylesheet from "./StaticStylesheet.ts"; type Props = { @@ -33,37 +33,37 @@ export default async function PageLayout( elem( "head", {}, - elem("meta", { charset: "UTF-8" }), - elem("meta", { + meta({ charset: "UTF-8" }), + meta({ name: "viewport", content: "width=device-width, initial-scale=1.0", }), - elem("meta", { name: "author", content: config.site.author }), - elem("meta", { + meta({ name: "author", content: config.site.author }), + meta({ name: "copyright", content: `© ${metaCopyrightYear} ${config.site.author}`, }), - elem("meta", { name: "description", content: metaDescription }), + meta({ name: "description", content: metaDescription }), metaKeywords && metaKeywords.length !== 0 - ? elem("meta", { name: "keywords", content: metaKeywords.join(",") }) + ? meta({ name: "keywords", content: metaKeywords.join(",") }) : null, - elem("meta", { property: "og:type", content: "article" }), - elem("meta", { property: "og:title", content: metaTitle }), - elem("meta", { property: "og:description", content: metaDescription }), - elem("meta", { + meta({ property: "og:type", content: "article" }), + meta({ property: "og:title", content: metaTitle }), + meta({ property: "og:description", content: metaDescription }), + meta({ property: "og:site_name", content: config.sites[site].siteName, }), - elem("meta", { property: "og:locale", content: "ja_JP" }), - elem("meta", { name: "Hatena::Bookmark", content: "nocomment" }), + meta({ property: "og:locale", content: "ja_JP" }), + meta({ name: "Hatena::Bookmark", content: "nocomment" }), metaAtomFeedHref - ? elem("link", { + ? link({ rel: "alternate", href: metaAtomFeedHref, type: "application/atom+xml", }) : null, - elem("link", { + link({ rel: "icon", href: "/favicon.svg", type: "image/svg+xml", diff --git a/services/nuldoc/nuldoc-src/components/Pagination.ts b/services/nuldoc/nuldoc-src/components/Pagination.ts index 62e796b..d920316 100644 --- a/services/nuldoc/nuldoc-src/components/Pagination.ts +++ b/services/nuldoc/nuldoc-src/components/Pagination.ts @@ -1,4 +1,4 @@ -import { elem, Element } from "../dom.ts"; +import { a, div, Element, nav, span } from "../dom.ts"; type Props = { currentPage: number; @@ -10,43 +10,38 @@ export default function Pagination( { currentPage, totalPages, basePath }: Props, ): Element { if (totalPages <= 1) { - return elem("div", {}); + return div({}); } const pages = generatePageNumbers(currentPage, totalPages); - return elem( - "nav", + return nav( { class: "pagination" }, - elem( - "div", + div( { class: "pagination-prev" }, currentPage > 1 - ? elem("a", { href: pageUrlAt(basePath, currentPage - 1) }, "前へ") + ? a({ href: pageUrlAt(basePath, currentPage - 1) }, "前へ") : null, ), ...pages.map((page) => { if (page === "...") { - return elem("div", { class: "pagination-elipsis" }, "…"); + return div({ class: "pagination-elipsis" }, "…"); } else if (page === currentPage) { - return elem( - "div", + return div( { class: "pagination-page pagination-page-current" }, - elem("span", {}, String(page)), + span({}, String(page)), ); } else { - return elem( - "div", + return div( { class: "pagination-page" }, - elem("a", { href: pageUrlAt(basePath, page) }, String(page)), + a({ href: pageUrlAt(basePath, page) }, String(page)), ); } }), - elem( - "div", + div( { class: "pagination-next" }, currentPage < totalPages - ? elem("a", { href: pageUrlAt(basePath, currentPage + 1) }, "次へ") + ? a({ href: pageUrlAt(basePath, currentPage + 1) }, "次へ") : null, ), ); diff --git a/services/nuldoc/nuldoc-src/components/PostPageEntry.ts b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts index 75ad11c..482a3a8 100644 --- a/services/nuldoc/nuldoc-src/components/PostPageEntry.ts +++ b/services/nuldoc/nuldoc-src/components/PostPageEntry.ts @@ -6,26 +6,32 @@ import { } from "../generators/post.ts"; import { dateToString } from "../revision.ts"; import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { + a, + article, + elem, + Element, + footer, + h2, + header, + p, + section, +} from "../dom.ts"; import TagList from "./TagList.ts"; type Props = { post: PostPage; config: Config }; export default function PostPageEntry({ post, config }: Props): Element { - return elem( - "article", + return article( { class: "post-entry" }, - elem( - "a", + a( { href: post.href }, - elem("header", { class: "entry-header" }, elem("h2", {}, post.title)), - elem( - "section", + header({ class: "entry-header" }, h2({}, post.title)), + section( { class: "entry-content" }, - elem("p", {}, post.description), + p({}, post.description), ), - elem( - "footer", + footer( { class: "entry-footer" }, elem( "time", diff --git a/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts b/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts index 1dc5f1a..f14a537 100644 --- a/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts +++ b/services/nuldoc/nuldoc-src/components/SlidePageEntry.ts @@ -6,26 +6,32 @@ import { import { SlidePage } from "../generators/slide.ts"; import { dateToString } from "../revision.ts"; import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { + a, + article, + elem, + Element, + footer, + h2, + header, + p, + section, +} from "../dom.ts"; import TagList from "./TagList.ts"; type Props = { slide: SlidePage; config: Config }; export default function SlidePageEntry({ slide, config }: Props): Element { - return elem( - "article", + return article( { class: "post-entry" }, - elem( - "a", + a( { href: slide.href }, - elem( - "header", + header( { class: "entry-header" }, - elem("h2", {}, slide.description), + h2({}, slide.description), ), - elem("section", { class: "entry-content" }, elem("p", {}, slide.title)), - elem( - "footer", + section({ class: "entry-content" }, p({}, slide.title)), + footer( { class: "entry-footer" }, elem( "time", diff --git a/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts b/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts index 902e12f..666ca0e 100644 --- a/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts +++ b/services/nuldoc/nuldoc-src/components/SlidesGlobalHeader.ts @@ -1,32 +1,26 @@ import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { a, div, Element, header, li, nav, ul } from "../dom.ts"; export default function GlobalHeader({ config }: { config: Config }): Element { - return elem( - "header", + return header( { class: "header" }, - elem( - "div", + div( { class: "site-logo" }, - elem( - "a", + a( { href: `https://${config.sites.default.fqdn}/` }, "nsfisis.dev", ), ), - elem( - "nav", + nav( { class: "nav" }, - elem( - "ul", + ul( {}, - elem( - "li", + li( {}, - elem("a", { href: `https://${config.sites.about.fqdn}/` }, "About"), + a({ href: `https://${config.sites.about.fqdn}/` }, "About"), ), - elem("li", {}, elem("a", { href: "/slides/" }, "Slides")), - elem("li", {}, elem("a", { href: "/tags/" }, "Tags")), + li({}, a({ href: "/slides/" }, "Slides")), + li({}, a({ href: "/tags/" }, "Tags")), ), ), ); diff --git a/services/nuldoc/nuldoc-src/components/StaticScript.ts b/services/nuldoc/nuldoc-src/components/StaticScript.ts index 7df40fd..b8dc95d 100644 --- a/services/nuldoc/nuldoc-src/components/StaticScript.ts +++ b/services/nuldoc/nuldoc-src/components/StaticScript.ts @@ -1,6 +1,6 @@ import { join } from "@std/path"; import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { Element, script } from "../dom.ts"; import { calculateFileHash } from "./utils.ts"; export default async function StaticScript( @@ -16,5 +16,5 @@ export default async function StaticScript( const attrs: Record<string, string> = { src: `${fileName}?h=${hash}` }; if (type) attrs.type = type; if (defer) attrs.defer = defer; - return elem("script", attrs); + return script(attrs); } diff --git a/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts b/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts index 43802d2..065ee20 100644 --- a/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts +++ b/services/nuldoc/nuldoc-src/components/StaticStylesheet.ts @@ -1,6 +1,6 @@ import { join } from "@std/path"; import { Config } from "../config.ts"; -import { elem, Element } from "../dom.ts"; +import { Element, link } from "../dom.ts"; import { calculateFileHash } from "./utils.ts"; export default async function StaticStylesheet( @@ -8,5 +8,5 @@ export default async function StaticStylesheet( ): Promise<Element> { const filePath = join(Deno.cwd(), config.locations.staticDir, fileName); const hash = await calculateFileHash(filePath); - return elem("link", { rel: "stylesheet", href: `${fileName}?h=${hash}` }); + return link({ rel: "stylesheet", href: `${fileName}?h=${hash}` }); } diff --git a/services/nuldoc/nuldoc-src/components/TableOfContents.ts b/services/nuldoc/nuldoc-src/components/TableOfContents.ts index 37796ff..1eb79e9 100644 --- a/services/nuldoc/nuldoc-src/components/TableOfContents.ts +++ b/services/nuldoc/nuldoc-src/components/TableOfContents.ts @@ -1,17 +1,15 @@ import { TocEntry, TocRoot } from "../markdown/document.ts"; -import { elem, Element } from "../dom.ts"; +import { a, Element, h2, li, nav, ul } from "../dom.ts"; type Props = { toc: TocRoot; }; export default function TableOfContents({ toc }: Props): Element { - return elem( - "nav", + return nav( { class: "toc" }, - elem("h2", {}, "目次"), - elem( - "ul", + h2({}, "目次"), + ul( {}, ...toc.entries.map((entry) => TocEntryComponent({ entry })), ), @@ -19,13 +17,11 @@ export default function TableOfContents({ toc }: Props): Element { } function TocEntryComponent({ entry }: { entry: TocEntry }): Element { - return elem( - "li", + return li( {}, - elem("a", { href: `#${entry.id}` }, entry.text), + a({ href: `#${entry.id}` }, entry.text), entry.children.length > 0 - ? elem( - "ul", + ? ul( {}, ...entry.children.map((child) => TocEntryComponent({ entry: child })), ) diff --git a/services/nuldoc/nuldoc-src/components/TagList.ts b/services/nuldoc/nuldoc-src/components/TagList.ts index 540abe6..7260c53 100644 --- a/services/nuldoc/nuldoc-src/components/TagList.ts +++ b/services/nuldoc/nuldoc-src/components/TagList.ts @@ -1,5 +1,5 @@ import { Config, getTagLabel } from "../config.ts"; -import { elem, Element, text } from "../dom.ts"; +import { Element, li, text, ul } from "../dom.ts"; type Props = { tags: string[]; @@ -7,11 +7,10 @@ type Props = { }; export default function TagList({ tags, config }: Props): Element { - return elem( - "ul", + return ul( { class: "entry-tags" }, ...tags.map((slug) => - elem("li", { class: "tag" }, text(getTagLabel(config, slug))) + li({ class: "tag" }, text(getTagLabel(config, slug))) ), ); } |
