aboutsummaryrefslogtreecommitdiffhomepage
path: root/services/nuldoc/nuldoc-src/pages
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-11-27 06:29:01 +0900
committernsfisis <nsfisis@gmail.com>2025-11-27 06:29:01 +0900
commit83b1286354e0f5e83927c8fb35a584e587b5530b (patch)
treef8771f7808cd68b295c9e57051b7604de15fe8c8 /services/nuldoc/nuldoc-src/pages
parent327622573dcb8879b9dba934792403a9fb7239a7 (diff)
downloadnsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.tar.gz
nsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.tar.zst
nsfisis.dev-83b1286354e0f5e83927c8fb35a584e587b5530b.zip
refactor(nuldoc): Refactor elem()
Diffstat (limited to 'services/nuldoc/nuldoc-src/pages')
-rw-r--r--services/nuldoc/nuldoc-src/pages/AboutPage.ts97
-rw-r--r--services/nuldoc/nuldoc-src/pages/AtomPage.ts8
-rw-r--r--services/nuldoc/nuldoc-src/pages/HomePage.ts46
-rw-r--r--services/nuldoc/nuldoc-src/pages/NotFoundPage.ts4
-rw-r--r--services/nuldoc/nuldoc-src/pages/PostListPage.ts7
-rw-r--r--services/nuldoc/nuldoc-src/pages/PostPage.ts46
-rw-r--r--services/nuldoc/nuldoc-src/pages/SlideListPage.ts10
-rw-r--r--services/nuldoc/nuldoc-src/pages/SlidePage.ts54
-rw-r--r--services/nuldoc/nuldoc-src/pages/TagListPage.ts23
-rw-r--r--services/nuldoc/nuldoc-src/pages/TagPage.ts4
10 files changed, 142 insertions, 157 deletions
diff --git a/services/nuldoc/nuldoc-src/pages/AboutPage.ts b/services/nuldoc/nuldoc-src/pages/AboutPage.ts
index 43e239e..65a503d 100644
--- a/services/nuldoc/nuldoc-src/pages/AboutPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/AboutPage.ts
@@ -6,7 +6,21 @@ import { Config } from "../config.ts";
import { dateToString } from "../revision.ts";
import { getPostPublishedDate } from "../generators/post.ts";
import { SlidePage } from "../generators/slide.ts";
-import { elem, Element } from "../dom.ts";
+import {
+ a,
+ article,
+ div,
+ elem,
+ Element,
+ h1,
+ h2,
+ header,
+ img,
+ li,
+ p,
+ section,
+ ul,
+} from "../dom.ts";
export default async function AboutPage(
slides: SlidePage[],
@@ -25,20 +39,16 @@ export default async function AboutPage(
elem(
"main",
{ class: "main" },
- elem(
- "article",
+ article(
{ class: "post-single" },
- elem(
- "header",
+ header(
{ class: "post-header" },
- elem("h1", { class: "post-title" }, "nsfisis"),
- elem(
- "div",
+ h1({ class: "post-title" }, "nsfisis"),
+ div(
{ class: "my-icon" },
- elem(
- "div",
+ div(
{ id: "myIcon" },
- elem("img", { src: "/favicon.svg" }),
+ img({ src: "/favicon.svg" }),
),
await StaticScript({
fileName: "/my-icon.js",
@@ -47,31 +57,24 @@ export default async function AboutPage(
}),
),
),
- elem(
- "div",
+ div(
{ class: "post-content" },
- elem(
- "section",
+ section(
{},
- elem("h2", {}, "読み方"),
- elem(
- "p",
+ h2({}, "読み方"),
+ p(
{},
"読み方は決めていません。音にする必要があるときは本名である「いまむら」をお使いください。",
),
),
- elem(
- "section",
+ section(
{},
- elem("h2", {}, "アカウント"),
- elem(
- "ul",
+ h2({}, "アカウント"),
+ ul(
{},
- elem(
- "li",
+ li(
{},
- elem(
- "a",
+ a(
{
href: "https://twitter.com/nsfisis",
target: "_blank",
@@ -80,11 +83,9 @@ export default async function AboutPage(
"Twitter (現 𝕏): @nsfisis",
),
),
- elem(
- "li",
+ li(
{},
- elem(
- "a",
+ a(
{
href: "https://github.com/nsfisis",
target: "_blank",
@@ -95,19 +96,15 @@ export default async function AboutPage(
),
),
),
- elem(
- "section",
+ section(
{},
- elem("h2", {}, "仕事"),
- elem(
- "ul",
+ h2({}, "仕事"),
+ ul(
{},
- elem(
- "li",
+ li(
{},
"2021-01~現在: ",
- elem(
- "a",
+ a(
{
href: "https://www.dgcircus.com/",
target: "_blank",
@@ -118,27 +115,23 @@ export default async function AboutPage(
),
),
),
- elem(
- "section",
+ section(
{},
- elem("h2", {}, "登壇"),
- elem(
- "ul",
+ h2({}, "登壇"),
+ ul(
{},
...Array.from(slides)
- .sort((a, b) => {
- const ta = dateToString(getPostPublishedDate(a));
- const tb = dateToString(getPostPublishedDate(b));
+ .sort((s1, s2) => {
+ const ta = dateToString(getPostPublishedDate(s1));
+ const tb = dateToString(getPostPublishedDate(s2));
if (ta > tb) return -1;
if (ta < tb) return 1;
return 0;
})
.map((slide) =>
- elem(
- "li",
+ li(
{},
- elem(
- "a",
+ a(
{
href:
`https://${config.sites.slides.fqdn}${slide.href}`,
diff --git a/services/nuldoc/nuldoc-src/pages/AtomPage.ts b/services/nuldoc/nuldoc-src/pages/AtomPage.ts
index f270972..b39902e 100644
--- a/services/nuldoc/nuldoc-src/pages/AtomPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/AtomPage.ts
@@ -1,5 +1,5 @@
import { Feed } from "../generators/atom.ts";
-import { elem, Element } from "../dom.ts";
+import { elem, Element, link } from "../dom.ts";
export default function AtomPage({ feed }: { feed: Feed }): Element {
return elem(
@@ -7,8 +7,8 @@ export default function AtomPage({ feed }: { feed: Feed }): Element {
{ xmlns: "http://www.w3.org/2005/Atom" },
elem("id", {}, feed.id),
elem("title", {}, feed.title),
- elem("link", { rel: "alternate", href: feed.linkToAlternate }),
- elem("link", { rel: "self", href: feed.linkToSelf }),
+ link({ rel: "alternate", href: feed.linkToAlternate }),
+ link({ rel: "self", href: feed.linkToSelf }),
elem("author", {}, elem("name", {}, feed.author)),
elem("updated", {}, feed.updated),
...feed.entries.map((entry) =>
@@ -16,7 +16,7 @@ export default function AtomPage({ feed }: { feed: Feed }): Element {
"entry",
{},
elem("id", {}, entry.id),
- elem("link", { rel: "alternate", href: entry.linkToAlternate }),
+ link({ rel: "alternate", href: entry.linkToAlternate }),
elem("title", {}, entry.title),
elem("summary", {}, entry.summary),
elem("published", {}, entry.published),
diff --git a/services/nuldoc/nuldoc-src/pages/HomePage.ts b/services/nuldoc/nuldoc-src/pages/HomePage.ts
index 503a382..6e98458 100644
--- a/services/nuldoc/nuldoc-src/pages/HomePage.ts
+++ b/services/nuldoc/nuldoc-src/pages/HomePage.ts
@@ -2,7 +2,7 @@ import GlobalFooter from "../components/GlobalFooter.ts";
import GlobalHeader from "../components/DefaultGlobalHeader.ts";
import PageLayout from "../components/PageLayout.ts";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { a, article, elem, Element, h2, header } from "../dom.ts";
export default async function HomePage(config: Config): Promise<Element> {
return await PageLayout({
@@ -19,54 +19,42 @@ export default async function HomePage(config: Config): Promise<Element> {
elem(
"main",
{ class: "main" },
- elem(
- "article",
+ article(
{ class: "post-single" },
- elem(
- "article",
+ article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.about.fqdn}/` },
- elem(
- "header",
+ header(
{ class: "entry-header" },
- elem("h2", {}, "About"),
+ h2({}, "About"),
),
),
),
- elem(
- "article",
+ article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.blog.fqdn}/posts/` },
- elem("header", { class: "entry-header" }, elem("h2", {}, "Blog")),
+ header({ class: "entry-header" }, h2({}, "Blog")),
),
),
- elem(
- "article",
+ article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: `https://${config.sites.slides.fqdn}/slides/` },
- elem(
- "header",
+ header(
{ class: "entry-header" },
- elem("h2", {}, "Slides"),
+ h2({}, "Slides"),
),
),
),
- elem(
- "article",
+ article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: `https://repos.${config.sites.default.fqdn}/` },
- elem(
- "header",
+ header(
{ class: "entry-header" },
- elem("h2", {}, "Repositories"),
+ h2({}, "Repositories"),
),
),
),
diff --git a/services/nuldoc/nuldoc-src/pages/NotFoundPage.ts b/services/nuldoc/nuldoc-src/pages/NotFoundPage.ts
index 34854c4..6208066 100644
--- a/services/nuldoc/nuldoc-src/pages/NotFoundPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/NotFoundPage.ts
@@ -5,7 +5,7 @@ import SlidesGlobalHeader from "../components/SlidesGlobalHeader.ts";
import DefaultGlobalHeader from "../components/DefaultGlobalHeader.ts";
import PageLayout from "../components/PageLayout.ts";
import { Config } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import { article, div, elem, Element } from "../dom.ts";
export default async function NotFoundPage(
site: "default" | "about" | "blog" | "slides",
@@ -32,7 +32,7 @@ export default async function NotFoundPage(
elem(
"main",
{ class: "main" },
- elem("article", {}, elem("div", { class: "not-found" }, "404")),
+ article({}, div({ class: "not-found" }, "404")),
),
GlobalFooter({ config }),
),
diff --git a/services/nuldoc/nuldoc-src/pages/PostListPage.ts b/services/nuldoc/nuldoc-src/pages/PostListPage.ts
index 53b8fa4..ef7bfc5 100644
--- a/services/nuldoc/nuldoc-src/pages/PostListPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/PostListPage.ts
@@ -5,7 +5,7 @@ import Pagination from "../components/Pagination.ts";
import PostPageEntry from "../components/PostPageEntry.ts";
import { Config } from "../config.ts";
import { PostPage } from "../generators/post.ts";
-import { elem, Element } from "../dom.ts";
+import { elem, Element, h1, header } from "../dom.ts";
export default async function PostListPage(
posts: PostPage[],
@@ -34,10 +34,9 @@ export default async function PostListPage(
elem(
"main",
{ class: "main" },
- elem(
- "header",
+ header(
{ class: "page-header" },
- elem("h1", {}, pageTitle + pageInfoSuffix),
+ h1({}, pageTitle + pageInfoSuffix),
),
Pagination({ currentPage, totalPages, basePath: "/posts/" }),
...posts.map((post) => PostPageEntry({ post, config })),
diff --git a/services/nuldoc/nuldoc-src/pages/PostPage.ts b/services/nuldoc/nuldoc-src/pages/PostPage.ts
index fe67089..3b163d1 100644
--- a/services/nuldoc/nuldoc-src/pages/PostPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/PostPage.ts
@@ -3,7 +3,20 @@ import GlobalHeader from "../components/BlogGlobalHeader.ts";
import PageLayout from "../components/PageLayout.ts";
import TableOfContents from "../components/TableOfContents.ts";
import { Config, getTagLabel } from "../config.ts";
-import { elem, Element } from "../dom.ts";
+import {
+ a,
+ article,
+ div,
+ elem,
+ Element,
+ h1,
+ h2,
+ header,
+ li,
+ ol,
+ section,
+ ul,
+} from "../dom.ts";
import { Document } from "../markdown/document.ts";
import { dateToString } from "../revision.ts";
import { getPostPublishedDate } from "../generators/post.ts";
@@ -27,23 +40,18 @@ export default async function PostPage(
elem(
"main",
{ class: "main" },
- elem(
- "article",
+ article(
{ class: "post-single" },
- elem(
- "header",
+ header(
{ class: "post-header" },
- elem("h1", { class: "post-title" }, doc.title),
+ h1({ class: "post-title" }, doc.title),
doc.tags.length !== 0
- ? elem(
- "ul",
+ ? ul(
{ class: "post-tags" },
...doc.tags.map((slug) =>
- elem(
- "li",
+ li(
{ class: "tag" },
- elem(
- "a",
+ a(
{ href: `/tags/${slug}/` },
getTagLabel(config, slug),
),
@@ -55,19 +63,15 @@ export default async function PostPage(
doc.toc && doc.toc.entries.length > 0
? TableOfContents({ toc: doc.toc })
: null,
- elem(
- "div",
+ div(
{ class: "post-content" },
- elem(
- "section",
+ section(
{ id: "changelog" },
- elem("h2", {}, elem("a", { href: "#changelog" }, "更新履歴")),
- elem(
- "ol",
+ h2({}, a({ href: "#changelog" }, "更新履歴")),
+ ol(
{},
...doc.revisions.map((rev) =>
- elem(
- "li",
+ li(
{ class: "revision" },
elem(
"time",
diff --git a/services/nuldoc/nuldoc-src/pages/SlideListPage.ts b/services/nuldoc/nuldoc-src/pages/SlideListPage.ts
index 9a1c2b2..f1b1a2a 100644
--- a/services/nuldoc/nuldoc-src/pages/SlideListPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/SlideListPage.ts
@@ -6,7 +6,7 @@ import { Config } from "../config.ts";
import { dateToString } from "../revision.ts";
import { getPostPublishedDate } from "../generators/post.ts";
import { SlidePage } from "../generators/slide.ts";
-import { elem, Element } from "../dom.ts";
+import { elem, Element, h1, header } from "../dom.ts";
export default async function SlideListPage(
slides: SlidePage[],
@@ -28,11 +28,11 @@ export default async function SlideListPage(
elem(
"main",
{ class: "main" },
- elem("header", { class: "page-header" }, elem("h1", {}, pageTitle)),
+ header({ class: "page-header" }, h1({}, pageTitle)),
...Array.from(slides)
- .sort((a, b) => {
- const ta = dateToString(getPostPublishedDate(a));
- const tb = dateToString(getPostPublishedDate(b));
+ .sort((s1, s2) => {
+ const ta = dateToString(getPostPublishedDate(s1));
+ const tb = dateToString(getPostPublishedDate(s2));
if (ta > tb) return -1;
if (ta < tb) return 1;
return 0;
diff --git a/services/nuldoc/nuldoc-src/pages/SlidePage.ts b/services/nuldoc/nuldoc-src/pages/SlidePage.ts
index 8699134..1c6709c 100644
--- a/services/nuldoc/nuldoc-src/pages/SlidePage.ts
+++ b/services/nuldoc/nuldoc-src/pages/SlidePage.ts
@@ -6,7 +6,21 @@ import { Config, getTagLabel } from "../config.ts";
import { dateToString } from "../revision.ts";
import { Slide } from "../slide/slide.ts";
import { getPostPublishedDate } from "../generators/post.ts";
-import { elem, Element } from "../dom.ts";
+import {
+ a,
+ article,
+ button,
+ div,
+ elem,
+ Element,
+ h1,
+ h2,
+ header,
+ li,
+ ol,
+ section,
+ ul,
+} from "../dom.ts";
export default async function SlidePage(
slide: Slide,
@@ -28,23 +42,18 @@ export default async function SlidePage(
elem(
"main",
{ class: "main" },
- elem(
- "article",
+ article(
{ class: "post-single" },
- elem(
- "header",
+ header(
{ class: "post-header" },
- elem("h1", { class: "post-title" }, slide.title),
+ h1({ class: "post-title" }, slide.title),
slide.tags.length !== 0
- ? elem(
- "ul",
+ ? ul(
{ class: "post-tags" },
...slide.tags.map((slug) =>
- elem(
- "li",
+ li(
{ class: "tag" },
- elem(
- "a",
+ a(
{ href: `/tags/${slug}/` },
getTagLabel(config, slug),
),
@@ -53,19 +62,15 @@ export default async function SlidePage(
)
: null,
),
- elem(
- "div",
+ div(
{ class: "post-content" },
- elem(
- "section",
+ section(
{ id: "changelog" },
- elem("h2", {}, elem("a", { href: "#changelog" }, "更新履歴")),
- elem(
- "ol",
+ h2({}, a({ href: "#changelog" }, "更新履歴")),
+ ol(
{},
...slide.revisions.map((rev) =>
- elem(
- "li",
+ li(
{ class: "revision" },
elem(
"time",
@@ -78,11 +83,10 @@ export default async function SlidePage(
),
),
elem("canvas", { id: "slide", "data-slide-link": slide.slideLink }),
- elem(
- "div",
+ div(
{},
- elem("button", { id: "prev", type: "button" }, "Prev"),
- elem("button", { id: "next", type: "button" }, "Next"),
+ button({ id: "prev", type: "button" }, "Prev"),
+ button({ id: "next", type: "button" }, "Next"),
),
await StaticScript({
fileName: "/slide.js",
diff --git a/services/nuldoc/nuldoc-src/pages/TagListPage.ts b/services/nuldoc/nuldoc-src/pages/TagListPage.ts
index 6872a2f..cf1ec51 100644
--- a/services/nuldoc/nuldoc-src/pages/TagListPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/TagListPage.ts
@@ -4,7 +4,7 @@ import SlidesGlobalHeader from "../components/SlidesGlobalHeader.ts";
import PageLayout from "../components/PageLayout.ts";
import { Config } from "../config.ts";
import { TagPage } from "../generators/tag.ts";
-import { elem, Element } from "../dom.ts";
+import { a, article, elem, Element, footer, h1, h2, header } from "../dom.ts";
export default async function TagListPage(
tags: TagPage[],
@@ -28,11 +28,11 @@ export default async function TagListPage(
elem(
"main",
{ class: "main" },
- elem("header", { class: "page-header" }, elem("h1", {}, pageTitle)),
+ header({ class: "page-header" }, h1({}, pageTitle)),
...Array.from(tags)
- .sort((a, b) => {
- const ta = a.tagSlug;
- const tb = b.tagSlug;
+ .sort((t1, t2) => {
+ const ta = t1.tagSlug;
+ const tb = t2.tagSlug;
if (ta < tb) return -1;
if (ta > tb) return 1;
return 0;
@@ -48,18 +48,15 @@ export default async function TagListPage(
posts && slides ? "、" : ""
}${slides}`;
- return elem(
- "article",
+ return article(
{ class: "post-entry" },
- elem(
- "a",
+ a(
{ href: tag.href },
- elem(
- "header",
+ header(
{ class: "entry-header" },
- elem("h2", {}, tag.tagLabel),
+ h2({}, tag.tagLabel),
),
- elem("footer", { class: "entry-footer" }, footerText),
+ footer({ class: "entry-footer" }, footerText),
),
);
}),
diff --git a/services/nuldoc/nuldoc-src/pages/TagPage.ts b/services/nuldoc/nuldoc-src/pages/TagPage.ts
index 408f0b4..1826219 100644
--- a/services/nuldoc/nuldoc-src/pages/TagPage.ts
+++ b/services/nuldoc/nuldoc-src/pages/TagPage.ts
@@ -7,7 +7,7 @@ import SlidePageEntry from "../components/SlidePageEntry.ts";
import { Config, getTagLabel } from "../config.ts";
import { getPostPublishedDate } from "../generators/post.ts";
import { TaggedPage } from "../generators/tagged_page.ts";
-import { elem, Element } from "../dom.ts";
+import { elem, Element, h1, header } from "../dom.ts";
export default async function TagPage(
tagSlug: string,
@@ -37,7 +37,7 @@ export default async function TagPage(
elem(
"main",
{ class: "main" },
- elem("header", { class: "page-header" }, elem("h1", {}, pageTitle)),
+ header({ class: "page-header" }, h1({}, pageTitle)),
...pages.map((page) =>
"event" in page
? SlidePageEntry({ slide: page, config })