Hatena::Groupkeysnail

きすねた(ん)

2011-01-02

サジェスト付き辞書引きコマンド (Urban Dictionary, Goo 辞書)

| 00:58 | サジェスト付き辞書引きコマンド (Urban Dictionary, Goo 辞書) - きすねた(ん) を含むブックマーク はてなブックマーク - サジェスト付き辞書引きコマンド (Urban Dictionary, Goo 辞書) - きすねた(ん)

以前 こういったものを書いたが, やはり辞書引きコマンドにはサジェストが必要だろうと感じたので書き直した.

あと, Goo 辞書だけでは物足りないので Urban Dictionary も加えた. Urban Dictionary かわいいよ Urban Dictionary.

(function () {
    function googleSuggest(word) {
        const domain = "com";
        const base = "http://www.google.%s/complete/search?output=toolbar&q=%s";

        let ep  = util.format(base, domain, encodeURIComponent(word));
        let res = util.httpGet(ep);

        let matched = res.responseText.match("(<toplevel>.*</toplevel>)");

        if (!matched)
            return null;

        let xml = new XML(matched[1]);

        return [cs.suggestion.@data for each (cs in xml.CompleteSuggestion)];
    }

    function googleCompleter(args, extra) {
        let suggestions = googleSuggest(extra.query || "");

        return { collection : suggestions, origin : extra.whole.indexOf(extra.left) };
    }

    shell.add("udic", "Urban dictionary", function (args, extra) {
        const base = "http://www.urbandictionary.com/define.php?term=%s";

        util.setBoolPref("accessibility.browsewithcaret", false);
        gBrowser.loadOneTab(util.format(base, encodeURIComponent(args[0])),
                            null, null, null, extra.bang);
    }, { bang: true, completer: googleCompleter });

    shell.add("goodic", M({ja: "Goo 辞書", en: "Goo dic"}), function (args, extra) {
        const base = "http://dictionary.goo.ne.jp/search.php?MT=%s&kind=all&mode=0&IE=UTF-8";

        util.setBoolPref("accessibility.browsewithcaret", false);
        gBrowser.loadOneTab(util.format(base, encodeURIComponent(args[0])),
                            null, null, null, extra.bang);
    }, { bang: true, completer: googleCompleter });
})();

僕は以下のような感じで m に割り当てています. 便利.

key.defineKey([key.modes.VIEW, key.modes.CARET], 'm', function (ev, arg) {
    shell.input("udic " + (content.getSelection() || ""));
}, 'Lookup the meaning of the word');

追記

Urban dictionary は trim と調べれば pussy と出る, といった具合で色々とアグレッシブなため, m は Goo 辞書で M を Urban dictionary に変更した.

key.defineKey([key.modes.VIEW, key.modes.CARET], 'm', function (ev, arg) {
    shell.input("goodic " + (content.getSelection() || ""));
}, 'Lookup the meaning of the word');

key.defineKey([key.modes.VIEW, key.modes.CARET], 'M', function (ev, arg) {
    shell.input("udic " + (content.getSelection() || ""));
}, 'Lookup the meaning of the word');

KevrelKevrel2011/10/06 12:34Short, sweet, to the point, FREE-exactly as ionfrmation should be!