Hatena::Groupkeysnail

basyura snail

 | 

2010-03-16

勉強がてらはまぞうとたべぞうで検索するプラグインを作ってみた。

| 23:00 |  勉強がてらはまぞうとたべぞうで検索するプラグインを作ってみた。 - basyura snail を含むブックマーク はてなブックマーク -  勉強がてらはまぞうとたべぞうで検索するプラグインを作ってみた。 - basyura snail

http://github.com/basyura/zou-search

アイコンは手書きwww。右クリックメニューからインストールできる。

設定内容。

// はてなユーザIDを設定する。
plugins.options["zou_search.user"] = "basyura"

// キー登録
key.setViewKey('h', function (aEvent, aArg) {
    ext.exec("hamazou-search", aArg);
}, 'hamazou search', true);
key.setViewKey('t', function (aEvent, aArg) {
    ext.exec("tabezou-search", aArg);
}, 'tabezou search', true);

呼び出すとプロンプト(?)が表示されるので、検索したい内容を入力して Enter すると、はまぞうまたはたべぞうの別タブに検索結果が表示される。

今までは

  1. ブラウザブックマークメニューをクリック
  2. はまぞうたべぞうブックマークを選択
  3. はまぞうたべぞうの画面が表示される
  4. テキストボックスをクリックしてアクティブにする
  5. 検索内容を入力
  6. Enter

だったのが

  1. h を押す
  2. 検索内容を入力
  3. Enter

になった!!!

こういう小物プラグインを呼び出すターミナルみたいなプラグインが欲しいなと思い始めた。

行数も少ないのでソースを張り付け。添削求む。

var PLUGIN_INFO =
<KeySnailPlugin>
    <name>zou search</name>
    <name lang="ja">hamazou search</name>
    <description>hamazou and tabezou search plugin</description>
    <description lang="ja">hamazou と tabezou で検索するプラグインです</description>
    <version>0.0.1</version>
    <updateURL>http://github.com/basyura/zou-search/raw/master/zou_search.ks.js</updateURL>
    <iconURL>http://github.com/basyura/zou-search/raw/master/logo.jpg</iconURL>
    <author mail="basyura@gmail.com" homepage="http://basyura.org/">basyura</author>
    <license>The MIT License</license>
    <license lang="ja">MIT ライセンス</license>
    <minVersion>1.0</minVersion>
    <include>main</include>
    <provides>
        <ext>hamazou-search</ext>
        <ext>tabezou-search</ext>
    </provides>
	<options>
		<option>
			<name>zou_search.user</name>
			<type>string</type>
			<description>hatena user id</description>
			<description lang="ja">はてなのユーザID</description>
		</option>
	</options>
    <detail><![CDATA[
=== Usage ===
set hatena user id.
 >||
plugins.options["zou_search.user"] = "basyura"
 ||<
    ]]></detail>
    <detail lang="ja"><![CDATA[
=== 使い方 ===
はてなユーザIDを設定する。
 >||
plugins.options["zou_search.user"] = "basyura"
 ||<
キーを登録する。
 >||
key.setViewKey('h', function (aEvent, aArg) {
    ext.exec("hamazou-search", aArg);
}, 'hamazou search', true);
key.setViewKey('t', function (aEvent, aArg) {
    ext.exec("tabezou-search", aArg);
}, 'tabezou search', true);
 ||<

    ]]></detail>
</KeySnailPlugin>;

ext.add("hamazou-search", function (ev, arg) {
  var user = plugins.options["zou_search.user"];
  if(user == undefined) {
    alert("you need to set zou_search.user option.");
      return;
    }
    prompt.reader({
      message    : "hamazou: ",
      callback   : function (word) {
        word = encodeURIComponent(word);
        var url = "http://d.hatena.ne.jp/" 
                    + user 
                    + "/hamazou/search?mode=&ie=utf-8&word=" 
                    + word;
        gBrowser.loadOneTab(url, null, null, null, true);
    }
  });
}, M({ja: "はまぞう検索", en: "hamazou search"}));

ext.add("tabezou-search", function (ev, arg) {
  var user = plugins.options["zou_search.user"];
  if(user == undefined) {
    alert("you need to set zou_search.user option.");
    return;
  }
  prompt.reader({
    message    : "tabezou: ",
    callback   : function (word) {
      word = encodeURIComponent(word);
      var url = "http://d.hatena.ne.jp/" 
                 + user 
                 + "/tabezou/search?mode=&ie=utf-8&word=" 
                 + word;
      gBrowser.loadOneTab(url, null, null, null, true);
    }
  });
}, M({ja: "たべぞう検索", en: "tabezou search"}));
 |