org.mozilla.javascript.engine.Builtins Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rhino Show documentation
Show all versions of rhino Show documentation
Rhino is an open-source implementation of JavaScript written entirely in Java. It is typically
embedded into Java applications to provide scripting to end users.
The newest version!
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.javascript.engine;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import javax.script.ScriptContext;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Function;
import org.mozilla.javascript.ScriptRuntime;
import org.mozilla.javascript.Scriptable;
import org.mozilla.javascript.ScriptableObject;
/**
* This class defines the following built-in functions for the RhinoScriptEngine.
*
*
* - print(arg, arg, ...): Write each argument, concatenated to the ScriptEngine's "standard
* output" as a string.
*
*/
public class Builtins {
static final Object BUILTIN_KEY = new Object();
private Writer stdout;
void register(Context cx, ScriptableObject scope, ScriptContext sc) {
if (sc.getWriter() == null) {
stdout = new OutputStreamWriter(System.out);
} else {
stdout = sc.getWriter();
}
scope.defineFunctionProperties(
new String[] {"print"},
Builtins.class,
ScriptableObject.PERMANENT | ScriptableObject.DONTENUM);
}
public static void print(Context cx, Scriptable thisObj, Object[] args, Function f)
throws IOException {
Builtins self = getSelf(thisObj);
for (Object arg : args) {
self.stdout.write(ScriptRuntime.toString(arg));
}
self.stdout.write('\n');
// ref bug https://github.com/mozilla/rhino/issues/1356
self.stdout.flush();
}
private static Builtins getSelf(Scriptable scope) {
// Since this class is invoked as a set of anonymous functions, "this"
// in JavaScript does not point to "this" in Java. We set a key on the
// top-level scope to address this.
return (Builtins) ScriptableObject.getTopScopeValue(scope, BUILTIN_KEY);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy