diff options
| author | nsfisis <nsfisis@gmail.com> | 2024-08-14 03:08:58 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2024-08-14 03:08:58 +0900 |
| commit | a8e51a340d18c3b4a89c8ec3349b70f0715cd2f8 (patch) | |
| tree | 99fc7a335718ad63e29d24c7766611f798cd326e /vhosts/blog/nuldoc-src/components | |
| parent | 59d83667eda9ecdab05961da81c18f058a8ac065 (diff) | |
| download | nsfisis.dev-a8e51a340d18c3b4a89c8ec3349b70f0715cd2f8.tar.gz nsfisis.dev-a8e51a340d18c3b4a89c8ec3349b70f0715cd2f8.tar.zst nsfisis.dev-a8e51a340d18c3b4a89c8ec3349b70f0715cd2f8.zip | |
refactor(blog/nuldoc): use object value directly instead of key-value pairs to construct attribute pairs
Diffstat (limited to 'vhosts/blog/nuldoc-src/components')
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/global_footer.ts | 2 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/global_header.ts | 34 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/page_layout.ts | 67 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/post_page_entry.ts | 23 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/slide_page_entry.ts | 23 | ||||
| -rw-r--r-- | vhosts/blog/nuldoc-src/components/utils.ts | 6 |
6 files changed, 60 insertions, 95 deletions
diff --git a/vhosts/blog/nuldoc-src/components/global_footer.ts b/vhosts/blog/nuldoc-src/components/global_footer.ts index 7499fd8a..7fdc8797 100644 --- a/vhosts/blog/nuldoc-src/components/global_footer.ts +++ b/vhosts/blog/nuldoc-src/components/global_footer.ts @@ -4,7 +4,7 @@ import { el, Element } from "../dom.ts"; export function globalFooter(config: Config): Element { return el( "footer", - [["class", "footer"]], + { className: "footer" }, `© ${config.blog.siteCopyrightYear} ${config.blog.author}`, ); } diff --git a/vhosts/blog/nuldoc-src/components/global_header.ts b/vhosts/blog/nuldoc-src/components/global_header.ts index 93ff5ec9..166c48ff 100644 --- a/vhosts/blog/nuldoc-src/components/global_header.ts +++ b/vhosts/blog/nuldoc-src/components/global_header.ts @@ -4,38 +4,22 @@ import { el, Element } from "../dom.ts"; export function globalHeader(config: Config): Element { return el( "header", - [["class", "header"]], + { className: "header" }, el( "div", - [["class", "site-logo"]], - el("a", [["href", "/"]], config.blog.siteName), + { className: "site-logo" }, + el("a", { href: "/" }, config.blog.siteName), ), el( "nav", - [["class", "nav"]], + { className: "nav" }, el( "ul", - [], - el( - "li", - [], - el("a", [["href", "/about/"]], "About"), - ), - el( - "li", - [], - el("a", [["href", "/posts/"]], "Posts"), - ), - el( - "li", - [], - el("a", [["href", "/slides/"]], "Slides"), - ), - el( - "li", - [], - el("a", [["href", "/tags/"]], "Tags"), - ), + {}, + el("li", {}, el("a", { href: "/about/" }, "About")), + el("li", {}, el("a", { href: "/posts/" }, "Posts")), + el("li", {}, el("a", { href: "/slides/" }, "Slides")), + el("li", {}, el("a", { href: "/tags/" }, "Tags")), ), ), ); diff --git a/vhosts/blog/nuldoc-src/components/page_layout.ts b/vhosts/blog/nuldoc-src/components/page_layout.ts index 391305c1..a6b75d01 100644 --- a/vhosts/blog/nuldoc-src/components/page_layout.ts +++ b/vhosts/blog/nuldoc-src/components/page_layout.ts @@ -25,52 +25,31 @@ export async function pageLayout( ): Promise<Element> { const head = el( "head", - [], - metaElement([["charset", "UTF-8"]]), - metaElement([["name", "viewport"], [ - "content", - "width=device-width, initial-scale=1.0", - ]]), - metaElement([["name", "author"], ["content", config.blog.author]]), - metaElement([["name", "copyright"], [ - "content", - `© ${metaCopyrightYear} ${config.blog.author}`, - ]]), - metaElement([["name", "description"], [ - "content", - metaDescription, - ]]), + {}, + metaElement({ charset: "UTF-8" }), + metaElement({ + name: "viewport", + content: "width=device-width, initial-scale=1.0", + }), + metaElement({ name: "author", content: config.blog.author }), + metaElement({ + name: "copyright", + content: `© ${metaCopyrightYear} ${config.blog.author}`, + }), + metaElement({ name: "description", content: metaDescription }), ...(metaKeywords.length === 0 ? [] : [ - metaElement([["name", "keywords"], [ - "content", - metaKeywords.join(","), - ]]), - ]), - metaElement([ - ["property", "og:type"], - ["content", "article"], - ]), - metaElement([ - ["property", "og:title"], - ["content", metaTitle], - ]), - metaElement([ - ["property", "og:description"], - ["content", metaDescription], - ]), - metaElement([ - ["property", "og:site_name"], - ["content", config.blog.siteName], - ]), - metaElement([ - ["property", "og:locale"], - ["content", "ja_JP"], + metaElement({ name: "keywords", content: metaKeywords.join(",") }), ]), + metaElement({ property: "og:type", content: "article" }), + metaElement({ property: "og:title", content: metaTitle }), + metaElement({ property: "og:description", content: metaDescription }), + metaElement({ property: "og:site_name", content: config.blog.siteName }), + metaElement({ property: "og:locale", content: "ja_JP" }), ...(metaAtomFeedHref ? [linkElement("alternate", metaAtomFeedHref, "application/atom+xml")] : []), linkElement("icon", "/favicon.svg", "image/svg+xml"), - el("title", [], metaTitle), + el("title", {}, metaTitle), await stylesheetLinkElement("/style.css", config), ...( requiresSyntaxHighlight @@ -80,13 +59,13 @@ export async function pageLayout( ); return el( "html", - [["lang", "ja-JP"]], + { lang: "ja-JP" }, head, body, ); } -function metaElement(attrs: [string, string][]): Element { +function metaElement(attrs: Record<string, string>): Element { return el("meta", attrs); } @@ -95,9 +74,9 @@ function linkElement( href: string, type: string | null, ): Element { - const attrs: [string, string][] = [["rel", rel], ["href", href]]; + const attrs: Record<string, string> = { rel: rel, href: href }; if (type !== null) { - attrs.push(["type", type]); + attrs.type = type; } return el("link", attrs); } diff --git a/vhosts/blog/nuldoc-src/components/post_page_entry.ts b/vhosts/blog/nuldoc-src/components/post_page_entry.ts index 408cec72..bd82eb95 100644 --- a/vhosts/blog/nuldoc-src/components/post_page_entry.ts +++ b/vhosts/blog/nuldoc-src/components/post_page_entry.ts @@ -10,36 +10,37 @@ import { dateToString } from "../revision.ts"; export function postPageEntry(post: PostPage): Element { return el( "article", - [["class", "post-entry"]], + { className: "post-entry" }, el( "a", - [["href", post.href]], + { href: post.href }, el( "header", - [["class", "entry-header"]], - el("h2", [], post.title), + { className: "entry-header" }, + el("h2", {}, post.title), ), el( "section", - [["class", "entry-content"]], - el("p", [], post.description), + { className: "entry-content" }, + el("p", {}, post.description), ), el( "footer", - [["class", "entry-footer"]], + { className: "entry-footer" }, el( "time", - [["datetime", dateToString(getPostPublishedDate(post))]], + { datetime: dateToString(getPostPublishedDate(post)) }, dateToString(getPostPublishedDate(post)), ), " 投稿", ...(postHasAnyUpdates(post) ? [ "、", - el("time", [[ - "datetime", + el( + "time", + { "datetime": dateToString(getPostUpdatedDate(post)) }, dateToString(getPostUpdatedDate(post)), - ]], dateToString(getPostUpdatedDate(post))), + ), " 更新", ] : []), diff --git a/vhosts/blog/nuldoc-src/components/slide_page_entry.ts b/vhosts/blog/nuldoc-src/components/slide_page_entry.ts index 84422c36..e64a4022 100644 --- a/vhosts/blog/nuldoc-src/components/slide_page_entry.ts +++ b/vhosts/blog/nuldoc-src/components/slide_page_entry.ts @@ -10,36 +10,37 @@ import { dateToString } from "../revision.ts"; export function slidePageEntry(slide: SlidePage): Element { return el( "article", - [["class", "post-entry"]], + { className: "post-entry" }, el( "a", - [["href", slide.href]], + { href: slide.href }, el( "header", - [["class", "entry-header"]], - el("h2", [], slide.description), + { className: "entry-header" }, + el("h2", {}, slide.description), ), el( "section", - [["class", "entry-content"]], - el("p", [], slide.title), + { className: "entry-content" }, + el("p", {}, slide.title), ), el( "footer", - [["class", "entry-footer"]], + { className: "entry-footer" }, el( "time", - [["datetime", dateToString(getPostPublishedDate(slide))]], + { datetime: dateToString(getPostPublishedDate(slide)) }, dateToString(getPostPublishedDate(slide)), ), " 登壇", ...(postHasAnyUpdates(slide) ? [ "、", - el("time", [[ - "datetime", + el( + "time", + { "datetime": dateToString(getPostUpdatedDate(slide)) }, dateToString(getPostUpdatedDate(slide)), - ]], dateToString(getPostUpdatedDate(slide))), + ), " 更新", ] : []), diff --git a/vhosts/blog/nuldoc-src/components/utils.ts b/vhosts/blog/nuldoc-src/components/utils.ts index 5d57d033..ce693100 100644 --- a/vhosts/blog/nuldoc-src/components/utils.ts +++ b/vhosts/blog/nuldoc-src/components/utils.ts @@ -9,17 +9,17 @@ export async function stylesheetLinkElement( ): Promise<Element> { const filePath = join(Deno.cwd(), config.locations.staticDir, fileName); const hash = await calculateFileHash(filePath); - return el("link", [["rel", "stylesheet"], ["href", `${fileName}?h=${hash}`]]); + return el("link", { rel: "stylesheet", href: `${fileName}?h=${hash}` }); } export async function staticScriptElement( fileName: string, - attrs: [string, string][], + attrs: Record<string, string>, config: Config, ): Promise<Element> { const filePath = join(Deno.cwd(), config.locations.staticDir, fileName); const hash = await calculateFileHash(filePath); - return el("script", [["src", `${fileName}?h=${hash}`], ...attrs]); + return el("script", { src: `${fileName}?h=${hash}`, ...attrs }); } async function calculateFileHash( |
