詳細未調査です。
Rhinoでも、SpiderMonkeyでも、Mochikitを使えるよ、とBobさん。
早速試して見ました。
まず、配布プロダクトzipには含まれていないので、Subversionリポジトリ(http://svn.mochikit.com/mochikit/trunk)から最新のコードを取得します。
/trunk/scripts/spidermochi.jsを、/trunk/に持ってきます。
ファイルを開き、一番上の行のシェル指定行(#!/usr/bin/env js -w)を消して、以下コマンドで実行です。
jrunscript -f spidermochi.js
テストが実行されて、概ね動いていますが、5つぐらいこけてます。ちょっと後で見てみようっと。
spidermochi.jsのコードは以下。
#!/usr/bin/env js -w
var MochiKit = {__export__:true};
var JSAN = {
global: this,
use: function (module, symbols) {
var components = module.split(/\./);
var fn = components.join('/') + '.js';
var o = JSAN.global;
var i, c;
for (i = 0; i < components.length; i++) {
o = o[components[i]];
if (typeof(o) == 'undefined') {
break;
}
}
if (typeof(o) != 'undefined') {
return o;
}
load(fn);
o = JSAN.global;
for (i = 0; i < components.length; i++) {
o = o[components[i]];
if (typeof(o) == 'undefined') {
return undefined;
}
}
if (!symbols) {
var tags = o.EXPORT_TAGS;
if (tags) {
symbols = tags[':common'] || tags[':all'];
}
}
if (symbols) {
for (i = 0; i < symbols.length; i++) {
c = symbols[i];
JSAN.global[c] = o[c];
}
}
return o;
}
};
JSAN.use('MochiKit.MockDOM');
var window = this;
var document = MochiKit.MockDOM.createDocument();
JSAN.use('MochiKit.MochiKit');
JSAN.use('MochiKit.Test');
print("[[ MochiKit.Base ]]");
runTests('tests.test_Base');
print("[[ MochiKit.Color ]]");
runTests('tests.test_Color');
print("[[ MochiKit.DateTime ]]");
runTests('tests.test_DateTime');
print("[[ MochiKit.Format ]]");
runTests('tests.test_Format');
print("[[ MochiKit.Iter ]]");
runTests('tests.test_Iter');
print("[[ MochiKit.Logging ]]");
runTests('tests.test_Logging');
JSANのモック書いてます...。dojo使えないのかな...。
documentや、windowモックも作ってますが、BaseやIterを使う分にはいらないようです。
1.0あたりで、テストをJSANべったりから、スクリプトだけに切り離して依存性を下げているのが効いてます。
っと、以下で、Bobさんが言ってました。やはり、SpiderMonkeyか...。外部ライブラリとの接続はスムーズなのかな?