this
以下を実行した結果。
for (key1 in this) {
context.writer.println("<h1>" +key1 + "</h1>");
context.writer.println("<pre>" +this[key1] + "</pre>");
}
XMLResult
function XMLResult(out) { if (out instanceof javax.xml.transform.Result) { return out; } else { if (out instanceof Packages.org.w3c.dom.Document) { return new javax.xml.transform.dom.DOMResult(out); } else { out = new BufferedOutputStream(outStream(out)); return new javax.xml.transform.stream.StreamResult(out); } } }
echo
function echo(x) { for (var i = 0; i < arguments.length; i++) { println(arguments[i]); } }
javax.script.argv
[Ljava.lang.String;@1f7d134
javax.script.filename
listobjects.js
println
function println(str) { print(str, true); }
inStream
function inStream(str) { if (typeof (str) == "string") { if (str == "-") { return java.lang.System["in"]; } var file = null; try { file = pathToFile(str); } catch (e) { } if (file && file.exists()) { return new FileInputStream(file); } else { try { return new URL(str).openStream(); } catch (e) { throw "file or URL " + str + " not found"; } } } else { if (str instanceof InputStream) { return str; } else { if (str instanceof URL) { return str.openStream(); } else { if (str instanceof File) { return new FileInputStream(str); } } } } return java.lang.System["in"]; }
dirname
function dirname(pathname) { var dirName = "."; var i = pathname.replace("/", File.separatorChar).lastIndexOf(File.separator); if (i != -1) { dirName = pathname.substring(0, i); } return dirName; }
XMLDocument
function XMLDocument(inp) { var factory = javax.xml.parsers.DocumentBuilderFactory.newInstance(); var builder = factory.newDocumentBuilder(); if (inp) { if (typeof (inp) == "string") { return builder.parse(pathToFile(inp)); } else { return builder.parse(inp); } } else { return builder.newDocument(); } }
inp
java.io.BufferedInputStream@53c015
engine
com.sun.script.javascript.RhinoScriptEngine@136228
mkdirs
function mkdirs(dir) { var dir = pathToFile(dir); println(dir.mkdirs() ? "created" : "can not create dirs"); }
rmdir
function rmdir(pathname) { rm(pathname); }
streamClose
function streamClose(stream) { if (stream) { if (stream != java.lang.System["in"] && stream != java.lang.System.out && stream != java.lang.System.err) { try { stream.close(); } catch (e) { println(e); } } } }
exit
function exit(code) { if (code) { java.lang.System.exit(code + 0); } else { java.lang.System.exit(0); } }
cp
function cp(from, to) { if (from == to) { println("file " + from + " cannot be copied onto itself!"); return; } var inp = inStream(from); var out = outStream(to); var binp = new BufferedInputStream(inp); var bout = new BufferedOutputStream(out); var buff = javaByteArray(1024); var len; while ((len = binp.read(buff)) > 0) { bout.write(buff, 0, len); } bout.flush(); streamClose(inp); streamClose(out); }
JSInvoker
function JSInvoker(obj) { return new JSAdapter({__get__:function (name) { return function () { return obj.invoke(name, arguments); }; }}); }
jlist
function jlist(list) { function isValid(index) { return typeof (index) == "number" && index > -1 && index < list.size(); } return new JSAdapter({__get__:function (name) { if (isValid(name)) { return list.get(name); } else { if (name == "length") { return list.size(); } else { return undefined; } } }, __has__:function (name) { return isValid(name) || name == "length"; }, __delete__:function (name) { if (isValid(name)) { list.remove(name); } }, __put__:function (name, value) { if (isValid(name)) { list.set(name, value); } }, __getIds__:function () { var res = new Array(list.size()); for (var i = 0; i < res.length; i++) { res[i] = i; } return res; }, toString:function () { return list.toString(); }}); }
curDir
.
load
function load(str) { var stream = inStream(str); var bstream = new BufferedInputStream(stream); var reader = new BufferedReader(new InputStreamReader(bstream)); var oldFilename = engine.get(engine.FILENAME); engine.put(engine.FILENAME, str); try { engine.eval(reader); } finally { engine.put(engine.FILENAME, oldFilename); } streamClose(stream); }
exec
function exec(cmd) { var process = java.lang.Runtime.getRuntime().exec(cmd); var inp = new DataInputStream(process.getInputStream()); var line = null; while ((line = inp.readLine()) != null) { println(line); } process.waitFor(); $exit = process.exitValue(); }
printFile
function printFile(f) { var sb = new java.lang.StringBuffer(); sb.append(f.isDirectory() ? "d" : "-"); sb.append(f.canRead() ? "r" : "-"); sb.append(f.canWrite() ? "w" : "-"); sb.append(" "); var d = new java.util.Date(f.lastModified()); var c = new java.util.GregorianCalendar(); c.setTime(d); var day = c.get(java.util.Calendar.DAY_OF_MONTH); sb.append(months[c.get(java.util.Calendar.MONTH)] + " " + day); if (day < 10) { sb.append(" "); } var fieldlen = 8; var len = new java.lang.StringBuffer(); for (var j = 0; j < fieldlen; j++) { len.append(" "); } len.insert(0, java.lang.Long.toString(f.length())); len.setLength(fieldlen); var si = len.toString().indexOf(" "); if (si != -1) { var pad = len.toString().substring(si); len.setLength(si); len.insert(0, pad); } sb.append(len.toString()); sb.append(" "); sb.append(f.getName()); if (f.isDirectory()) { sb.append("/"); } println(sb.toString()); }
cd
function cd(target) { if (target == undefined) { target = sysProps["user.home"]; } if (!(target instanceof File)) { target = pathToFile(target); } if (target.exists() && target.isDirectory()) { curDir = target; } else { println(target + " is not a directory"); } }
cat
function cat(obj, pattern) { if (obj instanceof File && obj.isDirectory()) { ls(obj); return; } var inp = null; if (!(obj instanceof Reader)) { inp = inStream(obj); obj = new BufferedReader(new InputStreamReader(inp)); } var line; if (pattern) { var count = 1; while ((line = obj.readLine()) != null) { if (line.match(pattern)) { println(count + "\t: " + line); } count++; } } else { while ((line = obj.readLine()) != null) { println(line); } } }
rm
function rm(pathname) { file = pathToFile(pathname); if (!file.exists()) { println("file not found: " + pathname); return false; } println(file["delete"]() ? "deleted" : "can not delete"); }
ls
function ls(dir, filter) { if (dir) { dir = pathToFile(dir); } else { dir = curDir; } if (dir.isDirectory()) { var files = dir.listFiles(); for (var i in files) { var f = files[i]; if (filter) { if (!f.getName().match(filter)) { continue; } } printFile(f); } } else { printFile(dir); } }
XMLSource
function XMLSource(inp) { if (inp instanceof javax.xml.transform.Source) { return inp; } else { if (inp instanceof Packages.org.w3c.dom.Document) { return new javax.xml.transform.dom.DOMSource(inp); } else { inp = new BufferedInputStream(inStream(inp)); return new javax.xml.transform.stream.StreamSource(inp); } } }
date
function date() { println(new Date().toLocaleString()); }
outStream
function outStream(out) { if (typeof (out) == "string") { if (out == ">") { return java.lang.System.out; } else { return new FileOutputStream(pathToFile(out)); } } else { if (out instanceof OutputStream) { return out; } else { if (out instanceof File) { return new FileOutputStream(out); } } } return java.lang.System.out; }
quit
function quit(code) { exit(code); }
grep
function grep(pattern, files) { if (arguments.length < 2) { return; } for (var i = 1; i < arguments.length; i++) { println(arguments[i] + ":"); cat(arguments[i], pattern); } }
dir
function dir(d, filter) { ls(d, filter); }
javaByteArray
function javaByteArray(len) { return java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, len); }
read
function read(prompt, multiline) { if (!prompt) { prompt = ">"; } var inp = java.lang.System["in"]; var reader = new BufferedReader(new InputStreamReader(inp)); if (multiline) { var line = ""; while (true) { java.lang.System.err.print(prompt); java.lang.System.err.flush(); var tmp = reader.readLine(); if (tmp == "" || tmp == null) { break; } line += tmp + "\n"; } return line; } else { java.lang.System.err.print(prompt); java.lang.System.err.flush(); return reader.readLine(); } }
del
function del(pathname) { rm(pathname); }
find
function find(dir, pattern, callback) { dir = pathToFile(dir); if (!callback) { callback = print; } var files = dir.listFiles(); for (var f in files) { var file = files[f]; if (file.isDirectory()) { find(file, pattern, callback); } else { if (pattern) { if (file.getName().match(pattern)) { callback(file); } } else { callback(file); } } } }
printf
function printf(format, args) { var array = java.lang.reflect.Array.newInstance(java.lang.Object, arguments.length - 1); for (var i = 0; i < array.length; i++) { array[i] = arguments[i + 1]; } return java.lang.System.out.printf(format, array); }
File
[JavaClass java.io.File]
mv
function mv(from, to) { println(pathToFile(from).renameTo(pathToFile(to)) ? "moved" : "can not move"); }
mkdir
function mkdir(dir) { var dir = pathToFile(dir); println(dir.mkdir() ? "created" : "can not create dir"); }
env
{USERPROFILE=C:\Documents and Settings\Administrator, JAVA_HOME=C:\Program Files\Java\jdk1.6.0_18...}
print
function print(str, newline) { if (typeof (str) == "undefined") { str = "undefined"; } else { if (str == null) { str = "null"; } } var out = context.getWriter(); out.print(String(str)); if (newline) { out.print("\n"); } out.flush(); }
ip
function ip(name) { var addrs = InetAddress.getAllByName(name); for (var i in addrs) { println(addrs[i]); } }
sysProps
{java.runtime.name=Java(TM) SE Runtime Environment, sun.boot.library.path=C:\Program Files\Java\jdk1.6.0_18\jre\bin, java.vm.version=16.0-b13, java.vm.vendor=Sun Microsystems Inc., java.vendor.url=http://java.sun.com/, path.separator=;, java.vm.name=Java HotSpot(TM) Client VM, file.encoding.pkg=sun.io, sun.java.launcher=SUN_STANDARD, user.country=JP, sun.os.patch.level=Service Pack 3, java.vm.specification.name=Java Virtual Machine Specification, user.dir=C:\home\jrunscript, java.runtime.version=1.6.0_18-b07, java.awt.graphicsenv=sun.awt.Win32GraphicsEnvironment, java.endorsed.dirs=C:\Program Files\Java\jdk1.6.0_18\jre\lib\endorsed, os.arch=x86, java.io.tmpdir=C:\tmp\, line.separator= , ...}
pwd
function pwd() { println(curDir.getAbsolutePath()); }
months
Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec
arguments
[Ljava.lang.String;@1f7d134
which
function which(cmd) { var st = new java.util.StringTokenizer(env.PATH, File.pathSeparator); while (st.hasMoreTokens()) { var file = new File(st.nextToken(), cmd); if (file.exists()) { println(file.getAbsolutePath()); return; } } }
pathToFile
function pathToFile(pathname) { var tmp = pathname; if (!(tmp instanceof File)) { tmp = new File(tmp); } if (!tmp.isAbsolute()) { return new File(curDir, pathname); } else { return tmp; } }
XSLTransform
function XSLTransform(inp, style, out) { switch (arguments.length) { case 2: inp = arguments[0]; out = arguments[1]; break; case 3: inp = arguments[0]; style = arguments[1]; out = arguments[2]; break; default: println("XSL tranform requires 2 or 3 arguments"); return; } var factory = javax.xml.transform.TransformerFactory.newInstance(); var tranformer; if (style) { transformer = factory.newTransformer(XMLSource(style)); } else { transformer = factory.newTransformer(); } var source = XMLSource(inp); var result = XMLResult(out); transformer.transform(source, result); if (source.getInputStream) { streamClose(source.getInputStream()); } if (result.getOutputStream) { streamClose(result.getOutputStream()); } }
context
javax.script.SimpleScriptContext@2a340e
err
java.io.PrintStream@bfbdb0
jmap
function jmap(map) { return new JSAdapter({__get__:function (name) { if (map.containsKey(name)) { return map.get(name); } else { return undefined; } }, __has__:function (name) { return map.containsKey(name); }, __delete__:function (name) { return map.remove(name); }, __put__:function (name, value) { map.put(name, value); }, __getIds__:function () { return map.keySet().toArray(); }, toString:function () { return map.toString(); }}); }
ren
function ren(from, to) { mv(from, to); }
out
java.io.PrintStream@3e86d0
org
[JavaPackage org]
edu
[JavaPackage edu]
javax
[JavaPackage javax]
com
[JavaPackage com]
net
[JavaPackage net]