pukiwiki1.5/markdown の履歴ソース(No.3)

#author("2023-10-30T18:01:04+09:00","default:nemusg.pad","nemusg.pad")
* PukwikiをMarkdownに対応させる [#g27db3ca]

- GitHubWikiのテキストを移行させるうえで、Markdownに対応させて入力できるようにしたほうが手間が少ないことに気づいた。しかし既存のPukiwiki記法も残さないとやはり手間になってしまう。
-- 雑にやると#がブロックタグなので、markdown見出しと競合する https://pukiwiki.osdn.jp/dev/?BugTrack/2413
- 地道に lib/convert_html.php や default.ini.php を編集しようかと思ったが先人の知恵があった。
-- [[Pukiwiki 1.5.4も無理やりMarkdown記法とPukiwiki記法に両対応させた - レ点腫瘍学ノート:https://oncologynote.jp/?baa57eda56]]
-- ただしPukiwiki本体まるごと配布なので、インストールし直しなのと「複数行プラグインは使用不可」なのがちょっと問題。ソースコード貼りにくい。
- 変換ツール
-- [[pukiwiki 文法を markdown 文法に変換する pukiwiki2markdown というツールを公開しました - saino.me (kaishuu0123):https://www.saino.me/entry/2019/12/16/105001]] 今回の用途には合わないが使える場面がありそう
- プラグイン形式だと[[ikamonster/pukiwiki-parser-prototype: PukiWiki対応マークアップ拡張:https://github.com/ikamonster/pukiwiki-parser-prototype]]があったのでこれを導入してみる
-- 導入は問題なくできたが、編集画面がリッチすぎてちょっと苦手だったので戻した。 `code` が非対応だった。



** ユーザ定義ルール [#i18d01ab]

気軽にできるのは default.ini.php に記載されているユーザ定義ルールの追加

*** デフォルト [#v1a013a0]

- %%%hoge(insタグ)%%%
- %%hoge(delタグ)%%
- '''hoge(emタグ)'''
- ''hoge(strongタグ)''

#code_x{{
// ユーザ定義ルール(コンバート時に置換)
$line_rules = array(
	'COLOR\(((?:[a-zA-Z]{1,20})|(?:#[0-9a-fA-F]{3,6}))\){([^}]*)}'
		=> '<span style="color:$1">$2</span>',
	'SIZE\((\d{1,2})\){([^}]*)}' => '<span style="font-size:$1px">$2</span>',
	'COLOR\(((?:[a-zA-Z]{1,20})|(?:#[0-9a-fA-F]{3,6}))\):((?:(?!COLOR\([^\)]+\)\:).)*)'
		=> '<span style="color:$1">$2</span>',
	// "SIZE(n):" PukiWiki 1.3 compatible notation
	'SIZE\(([1-7])\):((?:(?!SIZE\([^\)]+\)\:).)*)' => '<span class="size$1">$2</span>',
	'%%%(?!%)((?:(?!%%%).)*)%%%'	=> '<ins>$1</ins>',
	'%%(?!%)((?:(?!%%).)*)%%'	=> '<del>$1</del>',
	"'''(?!')((?:(?!''').)*)'''"	=> '<em>$1</em>',
	"''(?!')((?:(?!'').)*)''"	=> '<strong>$1</strong>',
);
}}