#author("2023-01-08T19:02:36+09:00;2023-01-08T18:58:53+09:00","","")
#author("2023-01-09T10:32:27+09:00","","")
* 行頭がタブでも整形済テキストになる+タブが除去されない [#af402a93]

- ページ: [[BugTrack]]
- 投稿者: [[ぬぺぺ]]
- 優先順位: 低
- 状態: 提案
- カテゴリー: 本体バグ
- 投稿日: 2022-12-30 (金) 13:32:14
- バージョン: 1.5.4

** メッセージ [#k43cf058]
[[FormattingRules#g72f3a72]]では
 行頭が半角空白で始まる行は整形済みテキストとなります。
と記載がありますが、実際には行頭がタブでも整形済テキストになります。

行頭はタブでも良いと思うので、FormattingRules#g72f3a72 を訂正した方が良いんじゃないでしょうか。

***おまけの問題 [#g728ea61]
半角空白でスタートする整形済テキストはその半角空白が除去されますが、タブスタートの整形済テキストは行頭のタブが除去されません。
 例1:半角空白スタート
	例2:タブスタート
(半角スペースとタブを混ぜてもひと続きの整形済テキストになるの気持ち悪いですね…笑)

***該当部分 [#eb656507]

convert_html.php L780
 // ' 'Space-beginning sentence
 // ' 'Space-beginning sentence
 // ' 'Space-beginning sentence
 class Pre extends Element
 {
 	function Pre(& $root, $text)
 	{
 		$this->__construct($root, $text);
 	}
 	function __construct(& $root, $text)
 	{
 		global $preformat_ltrim;
 		parent::__construct();
 		$this->elements[] = htmlsc(
 			(! $preformat_ltrim || $text == '' || $text[0] != ' ') ? $text : substr($text, 1));
 	}
 	// :
 	// 略
 	// :
 }

タブ文字が $text[0] != ' ' に引っかかって $text がそのまま出力されています。

convert_html.php L955あたり
 // The first character
 $head = $line[0];
 
 // :
 // 略
 // :
 
 // Pre
 if ($head == ' ' || $head == "\t") {
 	$this->last = & $this->last->add(new Pre($this, $line));
 	continue;
 }

明確にタブ文字スタート行が整形済テキストだと扱われています。

--------
- 指摘ありがとうございます。これはドキュメントを変えたほうがいいですね。タブと空白の挙動の違い (タブが除去されない) については、理想的には合わせた方がいいのですが、今から変えるのは影響が大きいのでこのままにしたいです -- [[umorigu]] &new{2023-01-08 (日) 18:58:53};
- ありがとうございます。割と重要度低めだとは思うのですが、よろしくお願いします。 -- [[ぬぺぺ]] &new{2023-01-09 (月) 10:32:27};

#comment

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.031 sec.

SourceForge