リストプラグイン作成
数週間前から私はChangeLog形式でメモを取り、ローカル内ではありますがchalowを用いてHTML化して閲覧し、週報や日報を書く、という情報活用を行っております。
検索用のCGIもついていてとても便利なのですが、私にとって一番使い勝手が悪いのが、リストがネストできないこと。つまり、
- これが
- できないの
- です
1段は"自動文字列置換"に下記のような記述を追加すればできるのですが。2段が欲しい…欲を言えば3段。ということで2段を手に入れるべく行動開始。
s!^-\s!<li>!gsm;
Text::Hatenaを使って大改造だ
まず、はてな記法をHTML化するText::HatenaというCPANで配布しているプラグインを導入してみることに。
最初はchalowを直接弄って、すべてをそれを介して変換させようとしましたが,難しくて手をつけられませんでした。
大人しくプラグイン方式で
ということで大人しくプラグイン方式に。cl.confに下記を追記。
### はてな記法で記述 # http://overlasting.dyndns.org/2006-05-26-2.html # usage: use Text::Hatena; sub t_h{ #はてな記法に変換 my ($text) = @_; my $parser = Text::Hatena->new; $parser->parse($text); my $parsed_text = $parser->html; return $parsed_text; }
取りあえずHatena.pmだけ置いて動かしてみる…動くわけがない。
CPANで入れてみたり、Cygwin内にできてしまったモジュール群にパスを通してみるも,動きはすれども出力されない状態。
Text::Hatenaの環境ができないって…オチひどすぎ
自動置換文字列が上から順に処理されることを前提として…なんていろいろと弄ってみるもギブアップ。
自分でプラグインを書いてしまえ
□自動文字列置換
s!^-\s!<li>!gsm;
### はてな記法で記述 # usage: sub hatena{ #はてな記法に変換 my ($text) = @_; $text =~ s/\n/<br>/g; # 改行を<br>に変換 ### -,-- : <ol> # Level.1 $text =~ s/<br>\-\s(.*?)<br>/<br><ul><li>$1<\/ul><br>/g; $text =~ s/<br>\-\s(.*?)<br>/<br><ul><li>$1<\/ul><br>/g; $text =~ s/<\/ul><br><ul>/<br>/g; # Level.2 $text =~ s/<br>\-\-\s(.*?)<br>/<br><ul id=l2><li>$1<\/ul id=l2><br>/g; $text =~ s/<br>\-\-\s(.*?)<br>/<br><ul id=l2><li>$1<\/ul id=l2><br>/g; $text =~ s/<\/ul id=l2><br><ul id=l2>/<br>/g; $text =~ s/<\/ul><br><ul id=l2>/<br><ul id=l2>/g; $text =~ s/<\/ul id=l2><br><ul>/<\/ul id=l2><br>/g; $text =~ s/<br>/\n/g; # <br>を改行に戻し return $text; }
で、次のように使う。
{{hatena(' - Can I List Level3? - TesTes - TestTest -- This is Level2. -- This is Level2, too. - OK ')}}
するとこんな風に表示される。
- Can I List Level3?
- TesTes
- TestTest
- This is Level2.
- This is Level2, too.
- OK
また、ulをolにして"-"を"+"に変えれば……
- Can I List Level3?
- TesTes
- TestTest
- This is Level2.
- This is Level2, too.
- OK
英語はひどいけどchalowはハッピー。