Rhino 1.6R4RC1
まだ試していないけど, 多分今度は JavaScript 1.7の機能カナーなんて。
つか, ソレもアレだけど, いろんな記事に Rhinoが紹介されてたりして, ついにメジャーになっちゃうのか? みたいな。
- JavaとJavaScriptの親しい関係:小山博史のJavaを楽しむ(1) - @IT (でも紹介されてるのは一つ前の rhino1_6R2.zip)
- Rhino - Wikipedia
追記
Rhino 1.6R4RC1を downloadして動かしてみたけど, JavaScript 1.7の機能のかけらも入ってなさそげ。つーことで, Rhinoでディレクトリ内容比較スクリプト作って調べてみた。
ドキュメント以外は JavaMembers.javaしか変わってないよーな ・・・ ってバグ修正だったっぽい
/* ディレクトリを辿って比較してみる */ importPackage(java.lang, java.io, java.security) var newArray = java.lang.reflect.Array.newInstance function dtree(path, func) { var list = [], idx = list.length for each (var f in path.listFiles()) if (f.file) func(f) else if (f.directory) list[idx++] = f for each (var f in list) dtree(f, func) } function fileDigest(algorithm) { var md = MessageDigest.getInstance(algorithm) return function (file) { var ba = newArray(Byte.TYPE, file.length()) var ins = new DigestInputStream(new FileInputStream(file), md) try { ins.read(ba) } finally { if (ins) ins.close(), ins = null } return md.digest() } } var source = new File('/usr/local/rhino1_6r4') var target = new File('/usr/local/rhino1_6r3') var re = new RegExp('^'+String(source.path).replace(/\\/g, '\\\\')) var fdmd5 = fileDigest('MD5') dtree(source, function(f) { var npath = String(f).replace(re, target.path) var nfile = new File(npath) if (!nfile.exists()) print('ファイルがない:', f) else if (!cmp(fdmd5(f), fdmd5(nfile))) print('違う:', f) }) function cmp(ba, tba) { for (var i = 0; i < ba.length; i++) { if (ba[i] != tba[i]) return false } return true }
後で気付いたけど, MD5をアレする必要なかったカモ。