jsm メモ
- 謎な環境で eval される。
- Component.classes とかはもちろんあるけど、IO はない。alert もない (めんどす)
- Components.utils.import の第二引数を省略すると、現在の名前空間に import される (これどうやってるんだろ)
- ( http://d.hatena.ne.jp/ku0522/20071227/1198720903 )
- 第二引数かかないとこっちが汚染される?
- resource Protocol の setSubstitution に http: を指定して import しようとすると失敗する?
- セキュリティ的な問題?
- 単になんか他の部分でヘマしてる?
- ( http://mxr.mozilla.org/firefox/source/js/src/xpconnect/loader/mozJSComponentLoader.cpp#1409 ローカルファイル決めうち)
- なんか 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 ?