Web日記システムHTML変換器を独立させよう


Web日記システム用HTML変換器って?

世の中のWeb日記システムにはいろいろある。で、大抵持っている機能という のは

あたりだろうか。場合によっては、各日付の内容へのリンクを動的に生成す るのがあたりするが、まあ、動的生成と静的生成の差はここでは論じないことに する。問題は、前者(日記用簡易言語の仕様)が日記を付ける人のためのものであ る一方、後者が日記を読む人のための仕様であるということだ。

読む場合にはAというシステムの方がかっちょよいが、日記を付けるときに はBのほうが楽。

なんてこともあるのだが、実際は見映えの方を優先させて選ぶのでたとえ簡 易言語が難しくてもAシステムを選択することになる。ちょっと悲しい。

てことで、日記の本文(<body>...</body>の部分)をHTMLに直す 部分だけ、独立させて各システムで取り換え可能にすれば両面で幸せになれるの ではないけ? という、提案であるが、当然現存するシステムが将来そういう風に なってくれるとは到底思えないので:-)、とりあえず mkdiary.rb だけでもやってみる。て話。

mkdiary.rb の bodyfilter

mkdiary.rb では、日記の文を直接エディタで書いたりすることもできるが、 文章をメイルで送信して処理するモードもある。受信した文章をもとにその日の 日付のディレクトリを自動的に作り、トップページからそこへのリンクを張るよ うになっている。となると、メイルリーダでしこしこ本文となるHTMLを書かなけ ればならず、ちと面倒である。生のHTMLを書くようにしているのは簡易言語を作 るとそれがどんどん肥大化して余計難しくなるのを避けるためであるが、そうは 言ってもEmacs以外のエディタで生HTMLを書くのは結構しんどい。でも、いきな り簡易言語を導入したらこれまでHTMLで肌理細やかに書いてた人はいやがるだろ うし、あとで言語の仕様を変えたりとかを安全にやるのはなかなかたいへんであ る。

それらの要求を満たすため、本文に相当する部分を、そのまま生HTMLとして 処理するか、適当なHTML変換器で処理するかを選べるようにした。これを mkdiary.rb では bodyfilter と呼ぶ。

デフォルトでは、body2htmlというRubyスク リプトを供給している。これは、TABによるインデントを利用してその段落をUL でくくったりを判定する、きわめて御手軽な仕様のものである。p, blockquote, ul, ol くらいしか生成できない(それ以外のタグを入れたいときは手書き)。そ れでは物足りない! という人が必ずいるはずだ。そんな場合はぜひ、標準入力か ら <body>...</body> の内部のみを読み取り、それを適切なHTMLに 直すというフィルタスクリプトを作ってみてほしい。それによって、自分が日記 本文を書くときの文法が、好き勝手に決められるのでかなりゴキゲン(死語)だと 思う。

てことで、プレインテキストから適当なHTMLに直すフィルタを作ったら(持っ ていたら)是非、分けてください。おしまい。

現在利用可能なフィルタ

mkdiary.rb

mkdiary.rbではどう利用するか

ちなみにmkdiary.rbでは、メイル送信モードのときにフィルタを利用できる。 たとえばデフォルトで常に body2html を利用したいときは、 ~/.mkdiaryrc

bodyfilter=body2html

と書いておけば良い。ある日だけhrefフィルタも同時に使いてーとおもったら、 メイル本文の先頭

bodyfilter=body2html|href

と書けば良い。そう、フィルタだからパイプ(|)でつなげば良いの だ。


yuuji@example.org
Fingerprint16 = FF F9 FF CC E0 FE 5C F7 19 97 28 24 EC 5D 39 BA
HIROSE Yuuji - ASTROLOGY / BIKE / EPO / GUEST BOOK / YaTeX [Tweet]