Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン

最新版はhttp://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/にあります。

WEBの辞書を引くのに一々タブを開いて行ったり来たりするのは面倒じゃありませんか?
無駄な広告とかあって読み込みに時間が掛かるし。
ということで、プラグインを書いたよ。XPathで必要なノードのみ取得してvimperatorのバッファウィンドウ(と言えばいいのかしら。:echoコマンドとかで出力されるブラウザの下部)に出力する。

http://f.hatena.ne.jp/images/fotolife/t/teramako/20080221/20080221234346.png

設定方法

ファイル先頭部にある

var dictionalyList = [
    {
        names: ['eiji[ro]'],
        url: 'http://eow.alc.co.jp/%s/UTF-8/',
        shortHelp: '英辞郎',
        xpath: '//*[@id="resultList"]'
    },{
        names: ['goo'],
        url: 'http://dictionary.goo.ne.jp/search.php?MT=%s&kind=all&mode=0',
        shortHelp: 'goo辞書',
        encode: 'EUC-JP',
        xpath: '//div[@id="incontents"]/*[@class="ch04" or @class="fs14" or contains(@class,"diclst")]',
        multi: true
    }
];

ような感じで登録するとnamesがコマンドとなって辞書が引ける。
url%sにコマンド引数の文字列が入る。encodeにはマルチバイト文字をURIエンコードするときのエンコードUTF-8で良ければなくてもOK
xpathにはもちろんXPath式。複数ノードが選択される場合にはmultitrueにしてください。

使い方

上の例で行くと、:eijiro:gooコマンド + 引数で辞書を引ける。
:eijiro!などと"!"をつけると選択文字列を引くよ。

余談

実はこれ、前々から作りたかったプラグインだったりする。けど、HTML文字列のパースの仕方が分からなかった。XMLParserはXML用でHTMLではパースエラーになってしまう。
そんな時、Livedoor Readerで記事全文を表示するGreasemonkey Script - 枕をそばだてて聴くを発見。きっとその仕組みがあるに違いないということでLDR Full Feed – Userscripts.orgのソース解析。で、HTML文字列をDOMに変換する方法が分かったので早速プラグインを書いてみたというわけ。

あと、今回初めてlet定義を使用した。これはかなり強力。すごい。