summaryrefslogtreecommitdiffhomepage
path: root/vhosts/blog/nuldoc-src/components
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2024-08-14 03:08:58 +0900
committernsfisis <nsfisis@gmail.com>2024-08-14 03:08:58 +0900
commita8e51a340d18c3b4a89c8ec3349b70f0715cd2f8 (patch)
tree99fc7a335718ad63e29d24c7766611f798cd326e /vhosts/blog/nuldoc-src/components
parent59d83667eda9ecdab05961da81c18f058a8ac065 (diff)
downloadnsfisis.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.ts2
-rw-r--r--vhosts/blog/nuldoc-src/components/global_header.ts34
-rw-r--r--vhosts/blog/nuldoc-src/components/page_layout.ts67
-rw-r--r--vhosts/blog/nuldoc-src/components/post_page_entry.ts23
-rw-r--r--vhosts/blog/nuldoc-src/components/slide_page_entry.ts23
-rw-r--r--vhosts/blog/nuldoc-src/components/utils.ts6
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" },
`&copy; ${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",
- `&copy; ${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: `&copy; ${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(