はいはい、またまたText::Hatenaの登場ですよっと。興味のない人は(ry
昨晩、はてなグループで作ったテキストをコンバートしてpdfでプレゼン資料作れないかな、と考えていた。ネットがつながらないところでも、はてな記法使ってプレゼンできたらうれしいからね。はてな記法が一番手に馴染んでいる。で、はてな記法をコンバートするといったText::Hatenaだよな、ということでText::Hatenaのソースを読んでみることにした。「はてな記法みたいなのをコンバートするにはただ一行一行読み込んで正規表現で変換…ってのじゃだめなんだよな。何か複雑そうなソースに違いない」とか思って今まで見てもいなかったし、はてなのトップid:jkondo作である。ソースが俺に分かるのか、とか思っていた*1。
で、ソースを見てみると意外とすっきりした感じだった。「これのどこにパーサーが…?」とか思って見てみるとパーサーの役割自体はParse::RecDescetというやつに投げてあって*2、Text::Hatenaではそれのルールを決めるというところが行われているらしい。自分がやりたかったのは出力の部分をTeXに変えてfoilsでpdfを作ることだったので、割りと簡単にできた。リストが入れ子になってるときとかがちょっと複雑だが、実験してみたりすれば意味が分かってきた。まあ、元のParse::RecDescetとかは見てないわけだが。下方なんとかって何ですか。。。