不動産屋のラノベ読み

不動産売買営業だけどガチガチの賃貸派の人のブログ

Ubiquityのコマンドから別のコマンドを呼ぶ方法

 
 Ubiquityのコマンドから別のコマンドを呼び出すやり方があったので、ご報告。
 例えば、コマンド"twitter"を呼び出す場合、以下の感じです。

CmdUtils.__globalObject["cmd_twitter"](msg);

 CmdUtils.__globalObjectのキーに"cmd_"+【コマンド名】でexecuteを実行します。引数は受取側の名詞型を考慮して下さい。
 そういうわけで、現在開いているページのURLをメッセージの後に追加してついったにPOSTするコマンドは、こんな感じです。

CmdUtils.CreateCommand({
  name: "twitter:URL",
  description: "ついったに現在のページURLをつけてポストするテスト",
  takes: {"message": noun_arb_text},
  execute: function( message ) {
  var msg = {text: message.text + " " + window.content.location.href};
  CmdUtils.__globalObject["cmd_twitter"](msg);
  }
})

 受取側のコマンドがテキストの名詞型で受け取っているので、文字列で直接送りつけるとエラーになるわけです。
 
 
 
 で、思うのですけど、ゆびきちのコマンド作る時には、executeとかpreviewは無駄に戻り値与えておくと、別のコマンドで利用できるんじゃ? みたいな。
 作り方によっては、引数で既存コマンドを指定して任意コマンドをフックさせるようなコマンドもできるんじゃ? それって楽しそう! 試してないけど! ゆびきち楽しいなあ!
 
 
 
 ちなみに、このやり方は
 第3回 Ubiquityでオリジナルコマンドを作ろう(応用編):短期集中連載 速報!Ubiquityのポテンシャルを探れ|gihyo.jp … 技術評論社
 ↑で紹介されてた、
 http://hg.toolness.com/ubiquity-firefox/file/9a6c9935da9f/ubiquity/chrome/content/cmdutils.js
 ↑を読んでて気づきました。もう、みんな知ってるやり方なのかもしれないけど、コード読んでて裏技的なもの発見したの初めてなので、ちょー舞い上がっています。レベルアップしたかも俺。このままアマグラマー最強を目指すぜ*1

*1:ネタです