33 lines
968 B
Plaintext
33 lines
968 B
Plaintext
class Meta {
|
|
static getModuleVariables(module) {
|
|
if (!(module is String)) Fiber.abort("Module name must be a string.")
|
|
var result = getModuleVariables_(module)
|
|
if (result != null) return result
|
|
|
|
Fiber.abort("Could not find a module named '%(module)'.")
|
|
}
|
|
|
|
static eval(source) {
|
|
if (!(source is String)) Fiber.abort("Source code must be a string.")
|
|
|
|
var closure = compile_(source, false, false)
|
|
// TODO: Include compile errors.
|
|
if (closure == null) Fiber.abort("Could not compile source code.")
|
|
|
|
closure.call()
|
|
}
|
|
|
|
static compileExpression(source) {
|
|
if (!(source is String)) Fiber.abort("Source code must be a string.")
|
|
return compile_(source, true, true)
|
|
}
|
|
|
|
static compile(source) {
|
|
if (!(source is String)) Fiber.abort("Source code must be a string.")
|
|
return compile_(source, false, true)
|
|
}
|
|
|
|
foreign static compile_(source, isExpression, printErrors)
|
|
foreign static getModuleVariables_(module)
|
|
}
|