git-wiki。ファイル名にハイフンが入るのがなんか嫌なのでGitWikiというWikiNameにしたが。
GithubPagesのテンプレートとして実装されているwiki。サブWikiの公開に使っている。 なかなか良く出来ていると思うが、びっくりするほどググれない。
編集機能などはgithubの編集機能となるので、終わると元のページに戻らないなど遷移的にいまいちだが、 ページとしてのレンダリングはなかなか良い。Recent Changesとかも生成してくれるし。
ブログも同じサイト内に作る機能があってこれで統一するのはなかなか良さそうだが、 自分はすでに書いているブログがあるので使用してない。
GithubのWikiを使う事に比べて、ドメインがkarino2.github.io下になるのはちょっと嬉しい。
現状、タイトルがWikiNameじゃなくてサイトのタイトルになっちゃうので、 urlをMarkdown形式でコピーするExtensionとかの振る舞いがいまいち。タイトルカスタマイズ出来ないのかなぁ。
WikiName as page title · Issue #92 · Drassil/git-wiki-theme
やはりタイトルがページに表示されないのは不便なのでカスタマイズを試みる。
まず起点になるのは以下。
git-wiki-theme/git-wiki-default.html at master · Drassil/git-wiki-theme
で、そこからsections下がincludeされるので、これと同じパスに上書きしたファイルを置いてく。
git-wiki-theme/head.html at master · Drassil/git-wiki-theme
ファイル名はpage.name
に入っている。これには拡張子の.mdを含むが、後ろから3文字削除する方法は分からなかったので.mdを空文字にreplaceする。WikiNameに変な拡張子っぽい文字とか入れない必要があるが、これは普段からそうしているのでいいだろう。
文字回りはLiquidのドキュメントが良さそう。
Introduction – Liquid template language
head.htmlでタイトルを生成して適当な変数にassignしておく。ついでにtitleタグもここで生成する。
meta.htmlのseoでtitleが生成されているようだが、git-wikiではseoはあまり役に立つ情報を生成しているようには見えないので、これをmeta.htmlから外す。ついでにog:title
をhead.htmlで作ったものに更新しておく。(追記: GithubPagesで同じ作業をした時に、seoにtitle=false
を指定する事が出来るのを知ったので、もっと良いやり方もありそう)
あとはページのトップにh1で表示すればいいか。
これは_includes/git-wiki/sections/content/content.html
が手頃に見えたので、tocの上にh1でタイトルを表示しておく。
ついでにtocと記事の区切りがわかりにくいと思っていたのでhrを挟んでおく。
tocを囲みのstyleにする方が良い気もするが、そこまでやる必要も無かろう。
少し調べてみた。 作っているのは以下。
git-wiki-theme/page-list.html at master · Drassil/git-wiki-theme
ここで、page.dateが空になっていてsortが効いていない。なんで空になっているのかは良く分からないが、本家のgit-wikiのデモページでも反映されてなさそうなので、たぶん動いていた事が無い気がする。
pageに入っているもので使えそうなものを眺めてみたが無さそう。
それよりは、普通に生成する方がいい気もするな。どうせ毎回WikiLinkをマークダウンリンクにsedで置き換えているので、 これらが終わった後にタイムスタンプでソートした先頭10件からhtmlを生成すればいい気がする。
wiki_src % git log --pretty=format:%cd BaseFood.md
Fri Oct 15 16:43:24 2021 +0900
Sun Oct 10 14:14:46 2021 +0900
Wed Oct 6 22:32:18 2021 +0900
wiki_src % git log --pretty=format:%cd -n 1 --date=iso BaseFood.md
2021-10-15 16:43:24 +0900
wiki_src % git log --pretty=format:%cd -n 1 --date=unix BaseFood.md
1634283804
これでリストは作れそうだが、htmlは何で書いたものかな。
awkで書いてみた。
動いている風味。
役に立ったページ
デフォルトで勝手にダークモードになって気に食わないのでオフにしようかと少しコードを見たが、問答無用でオンになるっぽい?
git-wiki-theme/scripts.html at master · Drassil/git-wiki-theme
フローティングボタンは問答無用で出されているように見える。
git-wiki-theme/body.html at master · Drassil/git-wiki-theme
bodyの方でも特にフラグは無さそう。 うーん、自分でここは差し替えるか。
差し替えてみた。
Disable darkmode by default. · karino2/Biochemistry705x@ff8b8a5
いいね。他のノートもこれにしよう。
設定を終えたら、以後は
$ docker-compose run --service-ports github-wiki-skeleton
で。
以下試行錯誤。
いい加減ローカルで動かしたくなったので少し調べる。 とりあえず普段試している動かし方で動かしたら、jekyll-avatarとかjekyll/jekyllのイメージには無いgemがあるなぁ。
と見ていたら、docker-compose.ymlを見つける。composeって使った事無いがぱっと見Dockerfileからだいたい類推が効くので使ってみよう。
$ docker-compose run github-wiki-skeleton
...
Liquid Exception: incompatible character encodings: ASCII-8BIT and UTF-8 in /_layouts/git-wiki-default.html
何これ?git-wiki-default.htmlはローカルには無いやつなんだが。 dockerでこういうのが起こるってやる気無くすなぁ。
持ってきて二分探査したら、以下で起きているっぽい。
ENVの設定がなんか以下で良く分からなかったので
ENV LC_ALL=C.UTF-8=value
普通に以下にしたあとにdocker-ccompose buildし直したら治った…
ENV LC_ALL C.UTF-8
なんかportがつながってないな。servie-portsというのを指定するらしい。
$ docker-compose run --service-ports github-wiki-skeleton
できた。