From 92c7b41ea10b0d43557e45bf24ed70dc1cdace18 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 20 Jun 2023 21:29:47 +0900 Subject: feat(nuldoc): improve indentation of tag --- nuldoc-src/renderers/html.ts | 22 +++++-- public/index.html | 20 ++++--- public/posts/index.html | 110 ++++++++++++++++++++-------------- public/slides/index.html | 30 ++++++---- public/tags/conference/index.html | 35 ++++++----- public/tags/cpp/index.html | 5 +- public/tags/cpp17/index.html | 5 +- public/tags/index.html | 70 +++++++++++++--------- public/tags/note-to-self/index.html | 5 +- public/tags/php/index.html | 75 +++++++++++++---------- public/tags/phpcon/index.html | 5 +- public/tags/phperkaigi/index.html | 45 ++++++++------ public/tags/phpstudy-tokyo/index.html | 20 ++++--- public/tags/python/index.html | 5 +- public/tags/python3/index.html | 5 +- public/tags/ruby/index.html | 10 ++-- public/tags/ruby3/index.html | 5 +- public/tags/rust/index.html | 5 +- public/tags/vim/index.html | 10 ++-- 19 files changed, 295 insertions(+), 192 deletions(-) diff --git a/nuldoc-src/renderers/html.ts b/nuldoc-src/renderers/html.ts index e8743c5..3b6c6eb 100644 --- a/nuldoc-src/renderers/html.ts +++ b/nuldoc-src/renderers/html.ts @@ -113,7 +113,17 @@ function getDtd(name: string): Dtd { } function isInlineNode(n: Node): boolean { - return n.kind === "text" || getDtd(n.name).type === "inline"; + if (n.kind === "text") { + return true; + } + if (n.name !== "a") { + return getDtd(n.name).type === "inline"; + } + + // a tag: check if all children are inline elements. + let allInline = true; + forEachChild(n, (c) => allInline &&= isInlineNode(c)); + return allInline; } function isBlockNode(n: Node): boolean { @@ -153,7 +163,7 @@ function elementNodeToHtmlText(e: Element, ctx: Context): string { let s = ""; if (e.name !== "__root__") { - if (dtd.type === "block") { + if (isBlockNode(e)) { s += indent(ctx); } s += `<${e.name}`; @@ -169,7 +179,7 @@ function elementNodeToHtmlText(e: Element, ctx: Context): string { } } s += ">"; - if (dtd.type === "block" && e.name !== "pre") { + if (isBlockNode(e) && e.name !== "pre") { s += "\n"; } } @@ -180,7 +190,7 @@ function elementNodeToHtmlText(e: Element, ctx: Context): string { ctx.isInPre = true; } forEachChild(e, (c) => { - if (dtd.type === "block" && !ctx.isInPre) { + if (isBlockNode(e) && !ctx.isInPre) { if (isInlineNode(c)) { if (needsIndent(prevChild)) { s += indent(ctx); @@ -201,7 +211,7 @@ function elementNodeToHtmlText(e: Element, ctx: Context): string { ctx.indentLevel -= 1; if (e.name !== "__root__" && !dtd.auto_closing) { if (e.name !== "pre") { - if (dtd.type === "block") { + if (isBlockNode(e)) { if (needsLineBreak(prevChild)) { s += "\n"; } @@ -209,7 +219,7 @@ function elementNodeToHtmlText(e: Element, ctx: Context): string { } } s += ``; - if (dtd.type === "block") { + if (isBlockNode(e)) { s += "\n"; } } diff --git a/public/index.html b/public/index.html index d3f2fe2..de61ae0 100644 --- a/public/index.html +++ b/public/index.html @@ -35,28 +35,32 @@
diff --git a/public/posts/index.html b/public/posts/index.html index 141793e..94ef3f7 100644 --- a/public/posts/index.html +++ b/public/posts/index.html @@ -37,7 +37,8 @@

投稿一覧

-
+ +

PHPerKaigi 2023 参加レポ

@@ -48,10 +49,11 @@
投稿
-
+
-
+ +

PNG 画像の最小構成エンコーダを実装する

@@ -62,10 +64,11 @@
投稿
-
+
-
+ +

このブログのジェネレータを書き直した

@@ -76,10 +79,11 @@
投稿
-
+
-
+ +

PHPerKaigi 2023: ボツになったトークン問題 その 3

@@ -90,10 +94,11 @@
投稿
-
+
-
+ +

PHPerKaigi 2023: ボツになったトークン問題 その 2

@@ -104,10 +109,11 @@
投稿
-
+
-
+ +

【備忘録】 このサイト用の VPS をセットアップしたときのメモ

@@ -118,10 +124,11 @@
投稿
-
+
-
+ +

PHPerKaigi 2023: ボツになったトークン問題 その 1

@@ -132,10 +139,11 @@
投稿
-
+
-
+ +

【PHP】 fizzbuzz を書く。1行あたり2文字で。

@@ -146,10 +154,11 @@
投稿、 更新
-
+
-
+ +

弊社の PHP Foundation への寄付に寄せて

@@ -160,10 +169,11 @@
投稿
-
+
-
+ +

PHP カンファレンス沖縄で出題されたコードゴルフの問題を解いてみた

@@ -174,10 +184,11 @@
投稿
-
+
-
+ +

PHPerKaigi 2022

@@ -188,10 +199,11 @@
投稿
-
+
-
+ +

term-banner: ターミナルにバナーを表示するツールを書いた

@@ -202,10 +214,11 @@
投稿、 更新
-
+
-
+ +

PHPerKaigi 2022 トークン問題の解説

@@ -216,10 +229,11 @@
投稿、 更新
-
+
-
+ +

【C++】 属性構文の属性名にはキーワードが使える

@@ -230,10 +244,11 @@
投稿
-
+
-
+ +

【Python】 クロージャとUnboundLocalError: local variable 'x' referenced before assignment

@@ -244,10 +259,11 @@
投稿
-
+
-
+ +

【Ruby】 自身を実行している処理系の種類を判定する

@@ -258,10 +274,11 @@
投稿
-
+
-
+ +

【Ruby】 then キーワードと case in

@@ -272,10 +289,11 @@
投稿
-
+
-
+ +

Rust のプリミティブ型はどこからやって来るか

@@ -286,10 +304,11 @@
投稿
-
+
-
+ +

【Vim】 autocmd events の BufWrite/BufWritePre の違い

@@ -300,10 +319,11 @@
投稿
-
+
-
+ +

Vimで選択した行の順番を入れ替える

@@ -314,10 +334,11 @@
投稿
-
+
-
+ +

PHPerKaigi 2021

@@ -328,10 +349,11 @@
投稿
-
+
-
+ +

My First Post

@@ -342,7 +364,7 @@
投稿
-
+