同一情報掲載先:[[dev:PukiWiki/1.4/ちょっと便利に/インライン・マルチラインコメント]]
*インライン・マルチラインコメント [#g372e0ff]
[[org:自作プラグイン/null.inc.php]]とpukiwiki.ini.phpのPKWKEXP_DISABLE_MULTILINE_PLUGIN_HACKを有効にすることで、同様のことが実現できます。改造には危険を伴います。どのように実現するかは各自の判断・責任でお願いします。

**発端 [#y5590e8f]
-[[org:欲しいプラグイン/300]]

 //コメント
は,1行コメントでかつ,
 文章 //コメント
のように,行中にコメントを書けない。

phpの/* ~ */のようなコメント機能が欲しい。


**仕様 [#if2ad7ab]
-見出し内はコメントアウトされない
-整形済みテキスト内はコメントアウトされない
-phpと同じ/* ~ */を使いたかったが,fixed_heading_anchorの処理を回避するのが面倒((行頭に*/があるとアンカーが付いてしまう((lib/file.phpのmake_str_rulesが付けてくれる T-T))))だったので,MediaWikiと同じ<!-- ~ -->にしました。
-見出し内はコメントアウトされない((*見出し<!--コメント-->のコメントは表示されます))
-整形済みテキスト内はコメントアウトされない((プログラムソースを張りたい時があると思いますので))
-phpと同じ/* ~ */を使いたかったが、fixed_heading_anchorの処理を回避するのが面倒((行頭に*/があるとアンカーが付いてしまう((lib/file.phpのmake_str_rulesが付けてくれる XD))))だったので、MediaWikiと同じ<!-- ~ -->にしました。
-<!-- ~ -->のコメントより、//のコメントの方が優先されます。((行頭//-->ではコメントを終了できません))
-&color(red){''テストが十分ではないかもしれません。''};問題がありましたらコメントください。
**テキスト整形ルール [#kfff6203]
コメントは表示されません
 文章1<!--コメント-->文章2
 文章1<!--コメント-->
 <!--コメント-->文章1
 文章1<!--コメント-->文章2<!--コメント-->文章3
 
 文章1<!--コメント
 コメント
 -->文章2

***null.inc.phpにできないが,この改造でできること [#m788fdf9]
-表組み構造をコメントアウト
 |A|B|C|<!--D|--E|-->
 |aaa|bbb|ccc|<!--ddd|eee|-->

-行の途中から複数行コメントアウト
 文章<!--コメント
 コメント-->

-複数行コメントアウト中,行の途中までコメントアウト
 <!--コメント
 コメント
 コメント-->文章

-上2件の合せ技~
 文章1<!--コメント
 コメント-->文章2
は~
 文章1文章2
と解釈されます。
**差分 [#r3b2f10f]
|BGCOLOR(pink):改造は自己責任で|
convert_html.php,v 1.18
 --- convert_html.org.php	Sat May 13 07:29:58 2006
 +++ convert_html.php	Sat May 26 14:49:15 2007
 @@ -885,6 +885,20 @@
  			// Line Break
  			if (substr($line, -1) == '~')
  				$line = substr($line, 0, -1) . "\r";
 +
 +			// Escape inline and multiline comments 
 +			$line = preg_replace('/\<\!--(.*)--\>/U','',$line);
 +			if (preg_match('/^(.*)\<\!--/U',$line, $matches)) {
 +				$line = $matches[1];
 +				while (! empty($lines)) {
 +					if (preg_match('/--\>(.*)$/U', array_shift($lines), $matches)) {
 + 						$line .= $matches[1];
 +						break;
 +					}
 +				}
 +			}
 +			$head = $line{0}; // replace head
  			
  			// Other Character
  			if (isset($this->classes[$head])) {
----
-devでツッコミを受けた後の修正版
 --- convert_html.org.php	Sat May 13 07:29:58 2006
 +++ convert_html.php	Tue May 29 06:43:56 2007
 @@ -885,6 +885,25 @@
  			// Line Break
  			if (substr($line, -1) == '~')
  				$line = substr($line, 0, -1) . "\r";
 +
 +			// Escape inline and multiline comments 
 +			if (strpos($line,'<!--') !== false) {
 +				$line = preg_replace('/\<\!--(.*)--\>/U','',$line);
 +				if (preg_match('/^(.*)\<\!--/U',$line, $matches)) {
 +					$line = $matches[1];
 +					while (! empty($lines)) {
 +						if (preg_match('/^(?!\/\/).*--\>(.*)$/U', array_shift($lines), $matches)) {
 + 							$line .= $matches[1];
 +							break;
 +						}
 +					}
 +				}
 +				if ($line == '') {
 +					$this->last = & $this;
 +					continue;
 +				}
 +				$head = $line{0}; // replace head
 +			}
  			
  			// Other Character
  			if (isset($this->classes[$head])) {
----
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 下位頁新規  一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Valid XHTML 1.1 Valid CSS