Bookmarkletをみやすく整形してみる。

http://www14.plala.or.jp/operairc/misc/bookmarklet.html
こんなのができた。
以下整形してくれるコード。

function exBookmarklet(str) {
    var pattern = /(;)|({)|(})|(javascript:)/g;
    var n = 0;
    return str.replace(pattern,function($0,$1,$2,$3,$4){
        var tab = '    ';
        if($2)
            n++;
        else if ($3)
            n--;
        return $0+unescape('%0D%0A')+tab.repeat(n);
    });
}

"}"のときのインデントに不満が残る。あと改行コードがあやしい。
すべての場合において思った通りに動くかは不明。


あとString.repeat()は

String.prototype.repeat = function (l) {
    return Array(l+1).join(this);
}

http://www.bigbold.com/snippets/posts/show/1480

vim

function! ExBookmarklet()
    let lines = split(getline('.'),'^javascript:(\?\zs\|;\zs\|{\zs\|}\zs')
    let n = line('.')
    for i in lines
        call setline(n,i)
        let n += 1
    endfor
endfunction

インデントはしません。続きの行を上書きします。
どんな感じに動くかのデモ