#author("2017-10-31T21:18:36+09:00","","")
#author("2017-10-31T21:45:37+09:00","","")
* lib/convert_html.php のclass YTable の微修正案 [#zc74c6fd]

- ページ: [[BugTrack]]
- 投稿者: 名無しさん
- 優先順位: 低
- 状態: 完了
- カテゴリー: その他
- 投稿日: 2007-09-08 (土) 14:15:48
- バージョン: 1.4.7
- リリース予定バージョン: 1.5.1

#contents

** メッセージ [#x5dceb82]
lib/convert_html.php のCSV形式の表組み(YTable)を生成するところで、このままでいいのかな?と思う部分があったので提案します。~
と言ってもほとんど何も変わらない気もしますけど。

下は[[cvs:lib/convert_html.php]] (v 1.19) の抜粋です。
 class YTable extends Element
 {
	var $col;
 
	function YTable($_value)
	{
		parent::Element();
 
		$align = $value = $matches = array();
		foreach($_value as $val) {
	(中略)
		}
		$this->col = count($value);
		$colspan = array();
		foreach ($value as $val)
			$colspan[] = ($val == '==') ? 0 : 1;
		$str = '';
		$count = count($value);
		for ($i = 0; $i < $count; $i++) {
			if ($colspan[$i]) {
				while ($i + $colspan[$i] < $count && $value[$i + $colspan[$i]] == '==')
					$colspan[$i]++;
				$colspan[$i] = ($colspan[$i] > 1) ? ' colspan="' . $colspan[$i] . '"' : '';
				$str .= '<td class="style_td"' . $align[$i] . $colspan[$i] . '>' . make_link($value[$i]) . '</td>';
			}
		}
		$this->elements[] = $str;
	}

本当はlib/convert_html.php のもっとコアな部分が速くなればな~、と思いつつもこれぐらいしかできないので。~
手のあいた時にでも、確認を願いします。


** その1: 二回 count() [#v8957a59]

$this->col にcount($value) を代入してから$count にcount($value) を代入するまでの間に、$value の要素を変更していないのに、2回count($value) する意味があるのかなと。
 $this->col = $count = count($value);
に修正するとか、for ループの中で$count をいじっていないので、いっその事$count を$this->col にしてしまっても問題がなさそうです。~
もともとは、次のように
		for ($i = 0; $i < count($value); $i++)
		{
			if ($colspan[$i])
			{
				while ($i + $colspan[$i] < count($value) and $value[$i + $colspan[$i]] == '==')
for やwhile の中で逐一計算していた部分を外に出すために、今の形にしていたのだと思いますがどうでしょうか。


//#comment


** その2: unset() するのはどうか [#s7c687ae]

さらにどうでもいい事ですが、$_value の中身(本文など)を$value と$align に写した後も、$_value を保持したまま残りの処理をしています。~
まあ、unset() してもforeach やfor ループの速さは変わらんでしょうけど。


//#comment

--------
* コメント [#v3ae5067]
-PukiWiki ChangeLog より
--[[cvs:lib/convert_html.php]] (1.20): BugTrack2/269: YTable(): Cleanup
- commit:c269397c2d で対応済みですので完了とします -- [[umorigu]] &new{2017-10-31 (火) 21:45:37};

#comment

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

PukiWiki 1.5.2+ © 2001-2019 PukiWiki Development Team. Powered by PHP 5.6.40-0+deb8u8. HTML convert time: 0.046 sec.

OSDN