-
Notifications
You must be signed in to change notification settings - Fork 7
Open
Labels
Description
背景
Kunaiの実装では、実は最初はレガシーなページの表示をしていて、後から色々と上乗せしています(JavaScriptを丸ごとオフにすると、本来の表示を見ることができます)。
現行の実装
今のkunaiでは、ページを表示した後に、常に最新のmdファイルをGitHubのリポジトリからフェッチしています。
Kunai::Metaでは、このmdファイルをMarkdownパーサでパースした上で、一部のメタ情報を抜き出してcpprefjpそのもののUX向上に使っています。
蛇足ですが、これはフェッチ自体に 250msec, パース&処理に 6msec ほどで済んでいるので、体感ではあまり感じないと思います。
情報1. ルートのコミットハッシュ
Kunai::Metaを実現するために使っている1つ目のビルド情報が、ルートのコミットハッシュです。
ルートのコミットハッシュは GitHub では Tree: に相当するので、 git clone をすることなく 1つのコミットハッシュで全てのファイルのスナップショットが取れます。
今は単純に master をコミットハッシュとして使っているので、常にmasterが取得されます。タイムラグによってはcpprefjpのサイト全体が不定な動作をする可能性があります。
情報2. 現在ページのリポジトリ内相対パス
2つ目のビルド情報が、今見ているページのmdのオリジナルリポジトリルートからの相対パスです。これは今は、
我ながら寒気がするような実装ですが、信じられないことに右上の「編集」ボタンのリンク先から取得しています。
改善案
実装としては、 base.html のテンプレートを
<head
data-kunai-build-repo="cpprefjp/site"
data-kunai-build-hash="3df4629d87cb4af43102b868cc224b7a6377d677"
data-kunai-build-source="reference/bitset/flip.md"
>
<!-- ... -->
</head>このようにすれば、スマートに解決できると思います。
