その他
ubiquity用辞書
最終更新日: 2009年7月22日

Firefoxのとても便利なアドオンUbiquity。簡単に使える辞書機能を追加してみた。

FirefoxでURLに"about:ubiquity"と入力し、上段のメニューより"Hack Ubiquity"を選択する。ここで、以下のコマンドを入力する。

CmdUtils.CreateCommand({
  names: ['mydic'],
  arguments: [{role: 'object', nountype: noun_arb_text, label: 'word_to_look_up'}],
  preview: function(pblock, args) {
    pblock.innerHTML = "<i>" + args.object.text + "</i>: Searching...";
    urlBase   = "http://btonic.est.co.jp/NetDic/NetDicV09.asmx/";
    searchUrl = urlBase + "SearchDicItemLite";
    getUrl    = urlBase + "GetDicItemLite";
    searchParams
        = {Dic: "EJdict", Word: args.object.text, Scope: "HEADWORD",
           Match: "EXACT", Merge: "AND", Prof: "XML",
           PageSize: "20", PageIndex: "0"};
    getParams
        = {Dic: "EJdict", Loc:"", Prof: "XML"};

    jQuery.get(
      searchUrl, searchParams,
      function(data) {
        //itemId = jQuery("ItemID", data).text();  // this works as well.
        itemId = jQuery(data).find("ItemID").text();
        getParams["Item"] = itemId;
        jQuery.get(
          getUrl, getParams,
          function(data) {
            resultStr = jQuery(data).find("Body").text();
            pblock.innerHTML = "<i>" + args.object.text + "</i>: " + resultStr;
          },
          "xml");
      },
      "xml");
  },
  execute: function(args) {
    urlString = "http://dictionary.goo.ne.jp/search.php?kind=ej&mode=0&kwassist=0&MT=" + args.object.text;
    Utils.openUrlInBrowser(urlString);
  }
})

これで、Webページ内の好きな英単語を選択してCtrl+Spaceに続き、"mydic"と入力すると、その意味が表示される。Enterキーで詳細表示(簡易表示と詳細表示に別々の辞書を使っている)。

以下はバージョン0.5よりも前向け。参考のために残しておく。

Ctrl+Space入力後に"command-editor"と入力してUbiquity Command Editorを開き、以下のコードを追加する。

CmdUtils.CreateCommand({
  name: "mydic",
  takes: {"word_to_look_up": noun_arb_text},
  preview: function(pblock, word) {
    pblock.innerHTML = "<i>" + word.text + "</i>: Searching...";
    urlBase   = "http://btonic.est.co.jp/NetDic/NetDicV09.asmx/";
    searchUrl = urlBase + "SearchDicItemLite";
    getUrl    = urlBase + "GetDicItemLite";
    searchParams
        = {Dic: "EJdict", Word: word.text, Scope: "HEADWORD",
           Match: "EXACT", Merge: "AND", Prof: "XML",
           PageSize: "20", PageIndex: "0"};
    getParams
        = {Dic: "EJdict", Loc:"", Prof: "XML"};

    jQuery.get(
      searchUrl, searchParams,
      function(data) {
        //itemId = jQuery("ItemID", data).text();  // this works as well.
        itemId = jQuery(data).find("ItemID").text();
        getParams["Item"] = itemId;
        jQuery.get(
          getUrl, getParams,
          function(data) {
            resultStr = jQuery(data).find("Body").text();
            pblock.innerHTML = "<i>" + word.text + "</i>: " + resultStr;
          },
          "xml");
      },
      "xml");
  },
  execute: function(word) {
    urlString = "http://dictionary.goo.ne.jp/search.php?kind=ej&mode=0&kwassist=0&MT=" + word.text
    Utils.openUrlInBrowser(urlString);
  }
})