Lamawiki-0.02

おもしろいもので、 ソースコードgithub に上げて、 見え方が変わると、 これまで気づかなかったコーディングの粗が見えてくるものです。 それで、 Lamawiki のいくつか気になってきた箇所を修正することにしました。 それに伴い、 テンプレートのパラメータも変えたので、 バージョンを変更しました。

0.02 までの一連のコミットのログです。 下に行くほど古くなります。

https://github.com/tociyuki/lamawiki-perl/commit/68e4cadeb4d96f50f6e1dd31eaca40a32b7a5756

InterWikiName のサーバ定義をソースから取り出す処理を Interwiki モジュールから Converter へ、 移動しました。 これにより、 書式変換モジュールをさしかえて、 別の書式へ変えるとき、 Interwiki モジュールを合わせて修正する必要がなくなりました。

https://github.com/tociyuki/lamawiki-perl/commit/c85c239f1a21063cbb8a654dbf6b4dffc2ac584f

認可モジュールの allow 手続きで、リビジョン orig から page への書き換えを認可するかどうかをチェックするのは、これまで通りです。 このコミットでは orig を書き換え可能かどうかをチェックするときに、 orig だけを使ってチェックを正しくおこなうように修正しました。 これまでは page へ書き換え可能かどうかをチェックしていたため、リンクのホワイトリストによるチェックを既に保存済みの内容に対しておこなうというバグがありました。この修正で、保存しようとした内容に対してリンクのチェックをおこないます。

https://github.com/tociyuki/lamawiki-perl/commit/dff3bedd6768d3663163cfb3dd8dce1116c88d08

4 つのテンプレート conflict、 edit、 editdeny、 rev で、 パラメータの名前が同じなのに、 意味が異なっているのが気になってきて、 パラメータ名をつけかえて同じ名前なら同じ意味になるように揃えました。 この修正のために、 これら 4 つのテンプレートの書き直しが必要になります。

  • パラメータ mine は POST しようとして衝突した内容を表します。
  • パラメータ page は最新リビジョンを表します。
  • パラメータ orig は指定したリビジョンを表します。
  • パラメータ prev は orig の一つ前のリビジョンを表します。

orig と prev が存在しないときは、 リビジョン 0 の空ページ・オブジェクトを返すようにふるまいを変えています。リビジョンの問い合わせに対して、 page orig prev の組を返すようにしたことを利用して、 save 手続きを素直な記述にすることができるので、一緒に書き直しをおこなっています。また、表には影響しない内部での修正として、 一覧ページ等のリビジョンを他と区別するために、 -1 を使うようにしました。

なお、 コミットを分けるのを忘れていて、このコミットには書式変換でアスタリスクエスケープするべきところでやってなかったバグ修正も混じっています。

https://github.com/tociyuki/lamawiki-perl/commit/a6750a5bc2b027916f5a82aa084d61fd67423a00

これと一つ前のコミットで、 書式変換ルーチンの変数名をエスケープ済み文字列へ束縛していることを明示するために esc 前置詞を使うようにしています。

https://github.com/tociyuki/lamawiki-perl/commit/8c29b98ad613ac7378839a3a83c5cbbe4dafcf81

Wiki 名の制限を強くしました。一文字目に使える 7bit ASCII の記号をアンダースコア、アスタリスク、丸左右括弧に限定しています。