はてなの改行対策

はてなダイアリーでは、テキストの中の改行は、改行ではなく段落の区切りとなって表示されてしまう。気にせず書こうかと思ったんだけど、長い文章を書こうと思うとやっぱり気になる。最初に自分が取った対策は、「段落の区切りまで改行を打たない」だった。この場合、複数の文から成る長い段落を書いていると、異様に長い「一行」が出来上がることになる。けれども、Emacsの表示設定を右端で折り返すようにしておけば(自分は、はてなダイアリーの記事はemacsで書いてsimple-hatena-modeで投稿している)、一応画面の中に自分が書いた文章が表示されるので、問題無いかと思った。思いきや、長い段落の途中でC-aを押すと、カーソルがえらい遠くに上がっていってしまうことに気が付いた。
何とかならんかと思って、simple-hatena-modeの後ろで動いているはてダラのソースを見てみたら、投稿しようとしているファイルにフィルタをかけられる機能発見。そういえば、そんなことがHPに書いてあった気がする。
なので、適当にテキストの中の改行を除くスクリプトを書きましたよ、というお話。if, elseばっかで何だか残念なコードだ。。。

#!/usr/bin/env python

import sys
import re


fname = sys.argv[1]
f = open(fname, "r")

out = ""
verbatim = False
for l in f:
    if not verbatim:
        temp = l.strip()
        if len(temp) == 0:
            out += "\n"
        elif temp[0] == "*":
            out += "\n" + temp + "\n"
        elif (temp[0] == "-" or
              temp[0] == "+"):
            if out[len(out) - 1] != "\n":
                out += "\n"
            out += temp + "\n"
        elif re.match("^>\|.*\|$", temp):
            verbatim = True
            out += "\n" + temp + "\n"
        else:
            out += temp
    else:
        out += l
        if re.match("^\|\|<$", l.strip()):
            verbatim = False

print out