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]