convwiki_rules

Top > Hack > convwiki_rules
2006-07-08
Tag: PukiWiki Hack

Wiki文法変換定義(convert_html 直前に適用されるユーザ定義ルール)

Table of Contents

概要

PukiWiki 文法を別の文法で表記できるように本体を改造。簡単ハック。

#lsx を #ls と表記したり、#mimetex(x) を $$x$$ と表記したり、 PukiWiki 記法を変更したりすることができるようになります。

適用

lib/convert_html.php、convert_html 関数の、$body->parse($lines); の直前に

	global $str_rules, $convwiki_rules;
	$tmp_rules = $str_rules; $str_rules = $convwiki_rules;
	foreach ($lines as $i => $line) {
		$lines[$i] = rtrim($lines[$i], "\n\r"); // something wierd
	}
	$lines = explode("\n", make_str_rules(implode("\n", $lines)));
	$str_rules = $tmp_rules;

を追加。

設定例

rules.ini.php の末尾に

/////////////////////////////////////////////////
// ユーザWikiルール変換ルール(convert_html直前に置換)
//  正規表現で記述してください。?(){}-*./+\$^|など
//  は \? のようにクォートしてください。
//  行頭指定は ^ を頭に。行末指定は $ を後ろに。
//
$convwiki_rules = array(
	'^\$\$ (.+) \$\$$'	=> '#mimetex($1)',
	'\$ ([^$]+) \$'		=> '&mimetex($1);',
);

のように追加します。これで mimetex プラグインを

$$ x $$
this is $ x $ pen. 

で実行できるようになります。よく $hoge は書くので、

$ x $

のように間に空白がないと発動しないようにする、例のような工夫がおすすめです。

x

this is x pen.


#htmlinsert(moge,...)

#moge(....)

で実行するなんてことも出来るかも?

既知の問題

任意の場所でキャンセルする方法がない。