47 lines
1001 B
Kotlin
47 lines
1001 B
Kotlin
package com.script
|
|
|
|
import org.mozilla.javascript.Context
|
|
import org.mozilla.javascript.NativeObject
|
|
import org.mozilla.javascript.ScriptableObject
|
|
|
|
class ScriptBindings : NativeObject() {
|
|
|
|
companion object {
|
|
private val topLevelScope: ScriptableObject by lazy {
|
|
val cx = Context.enter()
|
|
try {
|
|
cx.initStandardObjects()
|
|
} finally {
|
|
Context.exit()
|
|
}
|
|
}
|
|
}
|
|
|
|
init {
|
|
prototype = topLevelScope
|
|
}
|
|
|
|
operator fun set(key: String, value: Any?) {
|
|
Context.enter()
|
|
try {
|
|
put(key, this, Context.javaToJS(value, this))
|
|
} finally {
|
|
Context.exit()
|
|
}
|
|
}
|
|
|
|
operator fun set(index: Int, value: Any?) {
|
|
Context.enter()
|
|
try {
|
|
put(index, this, Context.javaToJS(value, this))
|
|
} finally {
|
|
Context.exit()
|
|
}
|
|
}
|
|
|
|
fun put(key: String, value: Any?) {
|
|
set(key, value)
|
|
}
|
|
|
|
}
|