Web辞書を引いて結果をバッファウィンドウに出力するvimperatorプラグイン
- lookupDictionary.js(UTF-8でみてね)
WEBの辞書を引くのに一々タブを開いて行ったり来たりするのは面倒じゃありませんか?
無駄な広告とかあって読み込みに時間が掛かるし。
ということで、プラグインを書いたよ。XPathで必要なノードのみ取得してvimperatorのバッファウィンドウ(と言えばいいのかしら。:echo
コマンドとかで出力されるブラウザの下部)に出力する。
設定方法
ファイル先頭部にある
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式。複数ノードが選択される場合にはmulti
をtrue
にしてください。
使い方
上の例で行くと、:eijiro
や:goo
コマンド + 引数で辞書を引ける。
:eijiro!
などと"!"をつけると選択文字列を引くよ。
余談
実はこれ、前々から作りたかったプラグインだったりする。けど、HTML文字列のパースの仕方が分からなかった。XMLParserはXML用でHTMLではパースエラーになってしまう。
そんな時、Livedoor Readerで記事全文を表示するGreasemonkey Script - 枕をそばだてて聴くを発見。きっとその仕組みがあるに違いないということでLDR Full Feed – Userscripts.orgのソース解析。で、HTML文字列をDOMに変換する方法が分かったので早速プラグインを書いてみたというわけ。
あと、今回初めてlet定義を使用した。これはかなり強力。すごい。