UNPKG

eggtended-js

Version:

A extended version of the Egg programming language from the Eloquent Javascript book.

45 lines (35 loc) 1.01 kB
const { TopEnv } = require("./environment.js"); const { Parser } = require("../parser/parse.js"); TopEnv["require"] = { fun: file => { if (!(file in TopEnv["require"].cache)) { const tree = Parser.parseFromFile(file); const env = Object.create(TopEnv); tree.evaluate(env); const module = { exports: env["module"].exports }; TopEnv["require"].cache[file] = module; } return TopEnv["require"].cache[file].exports; }, n_args: n => n === 1 }; TopEnv["require"].cache = Object.create(null); TopEnv["module"] = { exports: {} }; TopEnv["__addTopEnvProperties__"] = { fun: ModuleTopEnv => { for (const property in ModuleTopEnv) { TopEnv[property] = ModuleTopEnv[property]; } }, n_args: n => n === 1 }; // This function can import a npm module. The module will be saved on "var_name" TopEnv["use"] = { fun: module_name => { const ModuleTopEnv = require(module_name).TopEnv; return ModuleTopEnv; }, n_args: n => n === 1 };