2007年 12月 27日

jsm メモ

  • 謎な環境で eval される。
    • Component.classes とかはもちろんあるけど、IO はない。alert もない (めんどす)
  • Components.utils.import の第二引数を省略すると、現在の名前空間に import される (これどうやってるんだろ)
  • resource Protocol の setSubstitution に http: を指定して import しようとすると失敗する?
  • なんか instanceof がうまくいかない
    • 謎な環境なせいで prototype のオブジェクトが別になってる?

とりあえず File のユーティリティをちょこっと (名前空間とかまだちゃんと考えてないのでサンプル程度に) 書いてみた。なんかすぐ影響力のでかい人 (海外の) とかが別の作りそうで気がすすまない (無駄になる気がする)

Components.classes["@mozilla.org/network/io-service;1"]
          .getService(Components.interfaces.nsIIOService)
          .getProtocolHandler("resource")
          .QueryInterface(Components.interfaces.nsIResProtocolHandler)
          .setSubstitution("coderepos.org", IO.newURI("file:///Users/cho45/coderepos/platform/gecko/jsm/"));
          // .setSubstitution("coderepos.org", IO.newURI("http://svn.coderepos.org/share/platform/gecko/jsm/"));
Components.utils.import("resource://coderepos.org/file.jsm");

var file = IO.getFile("Temp", "test.txt")
File.write(file, "foobar");
alert(File.read(file)); //=> foobar

File.open("/tmp/hoge.txt", "write text", function (stream) {
    stream.writeString("foobarbaz");
});

これテストコードどうやって書けばいいんだ…… MozRepl ?