Alignブロックが次の行を食うようになってしまった†
- ページ: BugTrack
- 投稿者: reimy
- 優先順位: 重要
- 状態: 完了
- カテゴリー: 本体バグ
- 投稿日: 2003-05-27 (火) 20:55:22
- バージョン:
メッセージ†
RIGHT:、CENTER:、LEFT:のAlign行は従来、その1行だけが対象だったが、次の行も食うようになってしまった。
RIGHT:[[テスト>FrontPage]]
これはテストです。
RIGHT:[[サンプル>FrontPage]]
#contents
脱出方法が空行や見出し・水平線以外に存在しないので、これはまずい。
- Alignはブロック要素です。空行あるいは見出し・水平線等で分割されるまでが有効範囲です。上記サンプルのうち、前者については仕様どおりの動作をしています。 -- ぱんだ
- 1.3系からのコンバータが対応してたっけ? -- reimy
- 後者は、テーブルセルにDivクラスを置けるようにしたときにバグを作ってしまったみたいですね。#contentsはプラグインのように見えますが、実際はconvert_htmlが完了した後で<p>#contents</p>を文字列置換する、という微妙な処理を行っていて、今回はその<p></p>が付かなくなってしまったために問題が起きています。 -- ぱんだ
diff -u -r1.39 convert_html.php
--- convert_html.php 26 May 2003 13:53:49 -0000 1.39
+++ convert_html.php 27 May 2003 15:18:36 -0000
@@ -653,7 +653,7 @@
function Div(&$root,$text)
{
if (!preg_match("/^\#([^\(]+)(?:\((.*)\))?/",$text,$out) or !exist_plugin_convert($out[1])) {
- $this = new Inline($text);
+ $this = new Paragraph($text);
return;
}
parent::Block();
- #contentsを特別扱いするのはとても面倒なので、プラグインに書き直してしまおうかと思います。ページのスキャンをやり直す必要があるので少しパフォーマンスが落ちるかもしれませんが。 -- ぱんだ
- # recentは…ページの解析とプラグインの展開が最後まで済んでからでないと「プラグインが動的に生成するリンクの情報」が揃わないので、現状のままで行くしかない…のかなぁ。 -- ぱんだ
- 【注意】上記のパッチを当てるとテーブルのレイアウトが大きく崩れます。 -- reimy
- テーブルセル内にブロックプラグインを置けるようにする変更を元に戻しました。 cvs:convert_html.php(v1.4:r1.40) 今のままの仕掛けでは難しいと判断しました。 -- ぱんだ