何とは言わない天然水飲みたさ

Weekly report 2017-W27

まだ2017年も半分といったところなのに、既に FBX SDK 2018.1.1 (つまり FBX SDK 2018 のリビジョン2)が出ている。 翌月のナンバリングで発行する月刊雑誌とかじゃねえんだから……

2018.1.1 まででの変更点はだいたいバグフィックスとかオーディオ関連で、私が直接弄ろうという範囲への影響はなさそう。 FBX ファイル形式自体のバージョンも 7500 のままで一安心だ[0]

パブリック活動

Qvitter とは GNU Social で twitter ライクな UI を実現するためのプラグインであり、 QvitterPlus は Qvitter を更に拡張するプラグインである。

firefox における Qvitter のテキストボックスの挙動が google chrome と異なるため、改行の入力が投稿内容に正しく反映されなかった問題を修正した。 (テキストボックスで直接 Enter を押すと反映されなかったが、改行文字を含むテキストを C-v でペーストすると正しく反映されていた。)

問題の概要

content-editable="true" な div 要素内に作られる HTML 断片の違い

Qvitter や QvitterPlus においては、 <br> を改行文字に変換する処理がかけられており、結果 firefox では正しく改行入力が処理されていなかった。

改行の反映を正しく行うよう修正

最初のコミットである。

エスケープ処理を追加

[1]、よって HTML 要素を無視してテキストだけを処理しようとする前に、 <br> をテキストに見えるものに置換する必要がある。 その置換先に選ばれたのが {{{lb}}} という文字列である。

しかし修正前のコード中ではエスケープ処理に {{{lb}}} から <br> への(元に戻す方向の)置換を実行しており、これにより本文がもともと {{{lb}}} という文字列を含んでいた場合、それも改行に置換されてしまう。 最初のコミットで修正したバグが健在であればこれも役立ったかもしれないが、修正された今となっては完全に余計なことである。

これを修正するため、エスケープ処理を追加し、以下のように実行されるようにした。

  1. {} をエスケープして !{!} に置換[2] ← new!
  2. <br>{{{lb}}} に置換
  3. !{!} のエスケープを {} に戻す ← new!
  4. {{{lb}}} を実際の改行文字に置換

これにより、本文中の {{{lb}}} という文字列を意図せぬ変換から保護できた。 これが第2のコミットである。

QvitterPlus への同様の修正

QvitterPlus の該当部分のコードを参照すると、 Qvitter で予め設定されたハンドラを解除し、改めて改造版のものを登録している。 この改造版のハンドラには Qvitter 由来のコードがそのままコピーされている(しかも修正が必要なコードは2箇所にコピーされていた)ため、こちらにも Qvitter と同等の修正を施した。

私的活動

[3]

進捗: fbxcel