今回は、
gotoコマンド - シンプル版
開きたいサイトが明確にわかっている場合、
ここでは、
CmdUtils.CreateCommand({
name: "goto",
takes: { "argv": noun_arb_text },
author: { name: "Daichi GOTO" },
license: "BSD",
execute: function( argv ) {
var href = "";
switch ( argv.text ) {
case "reader":
href = "http://www.google.com/reader/";
break;
case "mixi":
href = "http://mixi.jp/";
break;
case "twitter":
href = "http://twitter.com/home";
break;
case "calendar":
href = "http://www.google.com/calendar/";
break;
case "gmail":
href = "https://mail.google.com/mail/";
break;
case "home":
href = "http://www.google.com/ig";
break;
default:
href = "http://www.google.com/ig";
break;
}
displayMessage( "going to " + href );
Utils.openUrlInBrowser( href );
},
});
引数に任意の文字列を指定し、
たとえば
gotoコマンド - カスタム名詞型で補完入力
Ubiquityのコマンド入力を効率的に実施するには補完機能の活用が欠かせません。先ほど作成したgotoコマンドに、
noun_type_sitekey = new CmdUtils.NounType(
"sitekey",
[ "reader", "mixi", "twitter", "calendar", "gmail", "home" ]
);
CmdUtils.CreateCommand({
name: "goto",
takes: { "argv": noun_type_sitekey },
author: { name: "Daichi GOTO" },
license: "BSD",
execute: function( argv ) {
var href = "";
switch ( argv.text ) {
case "reader":
href = "http://www.google.com/reader/";
break;
case "mixi":
href = "http://mixi.jp/";
break;
case "twitter":
href = "http://twitter.com/home";
break;
case "calendar":
href = "http://www.google.com/calendar/";
break;
case "gmail":
href = "https://mail.google.com/mail/";
break;
case "home":
href = "http://www.google.com/ig";
break;
}
displayMessage( "going to " + href );
Utils.openUrlInBrowser( href );
},
});

これでキーワードの入力補完が有効になります。またカスタム名詞型に含まれていないキーワードが指定された場合には、
gotoコマンド - 動的カスタム名詞型で補完入力
入力補完は有効になりましたが、
var Sites = {
'reader' : 'http://www.google.com/reader/',
'mixi' : 'http://mixi.jp/',
'twitter' : 'http://twitter.com/home',
'calendar' : 'http://www.google.com/calendar/',
'gmail' : 'https://mail.google.com/mail/',
'home' : 'http://www.google.com/ig',
};
var noun_type_sitekey = {
_name: "site keyword",
suggest: function( text, html ) {
var suggestions = [];
for ( var keyword in Sites ) {
if ( keyword.match( "^" + text ) ) {
suggestions.push( CmdUtils.makeSugg( keyword ) );
}
}
return suggestions;
}
};
CmdUtils.CreateCommand({
name: "goto",
takes: { "argv": noun_type_sitekey },
author: { name: "Daichi GOTO" },
license: "BSD",
execute: function( argv ) {
displayMessage( "going to " + Sites[argv.text] );
Utils.openUrlInBrowser( Sites[argv.text] );
},
});
上記のようにすれば、
var noun_type_sitekey = {
_name: "site keyword",
suggest: function( text, html ) {
var suggestions = [];
for ( var keyword in Sites ) {
if ( keyword.match( "^" + text ) ) {
suggestions.push( CmdUtils.makeSugg( keyword ) );
}
}
return suggestions;
}
};
名称として_nameを、
上記の場合、
開発向けドキュメント
UbiquityはすぐれたチュートリアルLabs/
今のところUbiquityの提供しているAPIを調べる最良の方法はUbiquityのソースコードを閲覧することにあります。Firefoxのユーザデータ領域にあるextensions/
また、
- builtincmds.
js - Ubiquityのデフォルトコマンド - cmdutils.
js - Ubiquityが提供するユーティリティ関数 - nountypes.
js - Ubiquityで定義されている名詞型
名詞型の概念さえ掴んでおけば、
Ubiquityコマンドの配布とアップデート
作成したUbiquityコマンドは次のような要素で指定しておけばFirefoxでページを閲覧した段階でコマンドのインストールへとつなげることができます。Ubiquityコマンドの配布については今後配布向けのサービスや信用できるかどうかのチェック機構などが用意されることになると見られます。
リスト5 Ubiquityコマンドファイルの配布用要素の書き方例<link rel="commands" href="http://スクリプトへのパス" name="=スクリプトのタイトル" />
Ubiquityでは最終的に、
Ubiquityでコントロールを取り戻せ
まだ実験的な取り組みとして公開されているUbiquity 0.
今回紹介した内容はUbiquityの初期段階にすぎず、