summaryrefslogtreecommitdiff
path: root/examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala
diff options
context:
space:
mode:
Diffstat (limited to 'examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala')
-rw-r--r--examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala42
1 files changed, 42 insertions, 0 deletions
diff --git a/examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala b/examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala
new file mode 100644
index 0000000..926fbb2
--- /dev/null
+++ b/examples/scala-js/sbt-plugin/src/main/scala/scala/scalajs/sbtplugin/env/rhino/package.scala
@@ -0,0 +1,42 @@
+/* __ *\
+** ________ ___ / / ___ __ ____ Scala.js sbt plugin **
+** / __/ __// _ | / / / _ | __ / // __/ (c) 2013, LAMP/EPFL **
+** __\ \/ /__/ __ |/ /__/ __ |/_// /_\ \ http://scala-js.org/ **
+** /____/\___/_/ |_/____/_/ | |__/ /____/ **
+** |/____/ **
+\* */
+
+
+package scala.scalajs.sbtplugin.env
+
+import org.mozilla.javascript._
+
+import scala.scalajs.tools.io._
+
+package object rhino {
+
+ implicit class ContextOps(val self: Context) extends AnyVal {
+ def evaluateFile(scope: Scriptable, file: VirtualJSFile,
+ securityDomain: AnyRef = null): Any = {
+ self.evaluateString(scope, file.content, file.path, 1, securityDomain)
+ }
+ }
+
+ implicit class ScriptableObjectOps(val self: Scriptable) {
+ def addFunction(name: String, function: Array[AnyRef] => Any) = {
+ val rhinoFunction =
+ new BaseFunction {
+ ScriptRuntime.setFunctionProtoAndParent(this, self)
+ override def call(context: Context, scope: Scriptable,
+ thisObj: Scriptable, args: Array[AnyRef]): AnyRef = {
+ function(args) match {
+ case () => Undefined.instance
+ case r => r.asInstanceOf[AnyRef]
+ }
+ }
+ }
+
+ ScriptableObject.putProperty(self, name, rhinoFunction)
+ }
+ }
+}