Home > Latest topics

Latest topics > XUL/Migemo 0.11.5でMinefield 3.1b2preのタブ検索に対応したよ

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

XUL/Migemo 0.11.5でMinefield 3.1b2preのタブ検索に対応したよ - Nov 08, 2008

表題の通り。昨日と今日とでガラッとUIが変わったりしてカオスな事この上ないMinefield 3.1b2preですが、最終版まで残るものと踏んで、タブの一覧を表示した時に絞り込みを行う検索欄でMigemo検索できるようにしました。ページ内検索の物とは異なり、スマートロケーションバーと同様にスペース区切りで複数語句のAND検索になります。入力からそれに対応する正規表現を生成する部分の処理はスマートロケーションバーの物を汎用化して使っているので、語句の頭に「-」を付ければNOT検索もできます。

で、その関係でpIXMigemoインターフェース(XMigemoCore)に新しくいくつかメソッドが加わりました。以下、IDL定義から抜粋。

AString getRegExpFunctional(
   in AString input,
   out AString termsRegExp,
   out AString exceptionsRegExp
);
attribute boolean andFindAvailable;
attribute boolean notFindAvailable;
boolean isValidFunctionalInput(in AString input);
AString trimFunctionalInput(in AString input);

getRegExpFunctional()に「nihon go -hoge」という風な文字列を渡すと、nihonとgoをローマ字入力として解釈した結果でAND検索を行うための正規表現が返ってきます。第2引数に渡したオブジェクトのvalueプロパティには、AND検索ではなくOR検索のための正規表現が格納されます(これを使うと、検索にマッチした単語を取り出すことができる)。第3引数に渡したオブジェクトのvalueプロパティには、NOT検索で「これにマッチしたら除外する」という用途に使う正規表現が格納されます。先の例だと「hoge」をローマ字入力として解釈した結果の正規表現ですね。

trimFunctionalInput()メソッドは、例えば「nihon go -」という風な(NOT検索の入力中と思われる)文字列を渡すと、前後の空白と最後のハイフンを取り除いた結果を返します。NOT検索が無効な時は、前後の空白だけが取り除かれます。今の所はそれだけしかしません。

isValidFunctionalInput()は、trimFunctionalInput()getRegExpFunctional()に渡してMigemo検索するに値する内容かどうかを判定します。このメソッドがfalseを返した場合はMigemo検索のための処理を丸ごとスキップする、という風な感じで使います。

タブの一覧の絞り込み部分のコード(filterListFromInputメソッド)が、まさにこれらの実際の利用例ということになります。自分のアドオンやらuserChrome.jsやらで使ってみたい人は参考にしてください。

他の目につく改良点として、スマートロケーションバーの検索処理を改善しました。というか修正しました。元々スマートロケーションバーでは、例えば「moz」と入力して出てきた候補から「mozilla.jp」を選択した場合、2度目以降はその候補が真っ先に表示されるし、同様に「mozilla.gr.jp」や「addons.mozilla.org」なども選択したことがある場合には選択回数が多い物から順に表示される、という仕様になってるんですが、これを再現するためのSQL文を書き間違えてて(MAX関数をJavaScriptのMath.max()みたいなものと勘違いしてた)、同じ項目を何度選んでも表示の順位が上がらないという状態になってました。スマートロケーションバーが全然スマートじゃなくなってたという……

分類:Mozilla > 拡張機能 > xulmigemo, , , , , , 時刻:00:20 | Comments/Trackbacks (0) | Edit

Comments/Trackbacks

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2008-11-07_previews.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード