www.ruby-lang.org のコードを参考に(ほぼそのまま)、 ブラウザの言語設定に応じて表示ページを変えるようにした。
それにともない、CGIにページ名を渡す方法も、従来の方式はそのままに PATH_INFO を用いる方法を追加。
/ja/hogehoge としていされたら、ja__hogehoge, hogehoge, en__hogehoge の順に探す。 /xx/hogehoge なら xx__hogehoge, en__hogehoge, hogehoge の順に探すようにした。
こうすることで、多言語対応ページがあればそれが表示され、ないなら存在するページを代替表示するので、徐々に多言語ページを書き足していくことができる。
以下の URL で参照していた MathJax.js を https で参照するように変更した。 http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=default.js
studs サイトを https で参照するようにした場合に、MathJax.js を http でアクセスしていたらブラウザが Javascript を信用しないらしかったので。
xbb の実行漏れがあったので修正。xbb をあらかじめ実行していなくても大丈夫な環境と、 そうでない環境があるみたい。さくらは後者なので PDF 作成に失敗することがあって発覚。
いままで、ref コマンドでは前方参照が解決できなかったが、 それを仕様にしてしまうのは不便なので、解決できるようにしたい。
2 パスにせざるを得ないのだが、どうやるかが問題。 1 パス目で未解決のものだけ残しておいて、最後に置換することも考えたが、 残しておく方法として完全な解はないし、あまり凝ったこともしたくない。
そこで、未解決ラベルがあったときには、1 パス目で解決済みの辞書をつかって、 まったく同じ処理をもう一度実行することにした。(La)TeX 式でいいかなと思って。
ただ、parse_html は並列に実行されるかもしれないのに、 処理中にいろいろファイルを作成する(例:dot の出力など)のが気になる。 ひとつのページの parse_html が同時に走らないよう、排他制御をいれたいところ。
そういうわけで、save_file, save_page と view (html の生成) が排他になるようにロックをとることにした。
また、そうすると、個々のファイル書き込み時の flock は冗長となり不要だとは思うが、 害はないので入れておくことにする。
2 つまえの節の第 2 段落や、この段落のように、半角数字から始まる段落が 番号つきリストと誤判定されていたのを直した。
HTML5 Validator によると、table 要素の summary 属性つけるのはもう古いとのことなので、 やめた。