Hatena::Groupmoz-addon

Ci.nsIZIGOROu

2007-08-03さらりとDIS

そのオブジェクトがどんなインターフェース実装してるか

| 15:28 |  そのオブジェクトがどんなインターフェース実装してるか - Ci.nsIZIGOROu を含むブックマーク はてなブックマーク -  そのオブジェクトがどんなインターフェース実装してるか - Ci.nsIZIGOROu

nsISupportsをデフォルトで除外する事にしました。(ぉ

function getInterfacesByObject(obj, excludeSupports) {
  if (!excludeSupports) {
    excludeSupports = true;
  }

  var ifaces = [];

  for (var iface in this.Ci) {
    if (obj instanceof this.Ci[iface]) {
      if (excludeSupports && iface == "nsISupports") {
        continue;
      }

      ifaces.push(this.Ci[iface]);
    }
  }

  return ifaces;
}

配列で返ってきます。

合わせ技としては、

repl> repl.getInterfacesByObject(Cc["@mozilla.org/scriptableInterfaceInfo;1"]).forEach(repl.docForInterface);

とかで、実装しているinterfaceのドキュメントをnsISupportsを除いて全て開かせるなんて事が出来ますよん。

でinitUrlで指定したスクリプトを再読み込みさせたい場合は、

repl> repl.loadInit();

でおkです。

オレオレMozRepl万歳。

brazilbrazil2007/08/03 21:49ぼくも同じようなとこやってました。
http://d.hatena.ne.jp/brazil/20070628/1182993179
http://d.hatena.ne.jp/brazil/20070618/1182168542

ZIGOROuZIGOROu2007/08/04 02:23nsIScriptableInterfaceInfoはちょうどbrazilさんとほぼ同時期にやってました。
でも実はその先があってメソッド、メソッドのパラメタとか掘り下げる事が出来たり、idlの定義そのものが取れたり中々面白いですね。

その辺りまとめてこうかなと。
なんせメモらないと忘れるのでw