static JSBool import_file_on_module(JSContext *context, JSObject *obj, std::string &name, std::string &filePath) { JSObject *module_obj; JSBool retval = JS_FALSE; module_obj = create_module_object (context); if (!define_import(context, obj, module_obj, name)) goto out; if (!import_file(context, name, filePath, module_obj)) goto out; if (!define_meta_properties(context, module_obj, filePath.c_str(), name, obj)) goto out; if (!seal_import(context, obj, name)) goto out; retval = JS_TRUE; out: if (!retval) cancel_import(context, obj, name); return retval; }
static JSBool import_file_on_module(JSContext *context, JSObject *obj, const char *name, GFile *file) { JSObject *module_obj; JSBool retval = JS_FALSE; char *full_path = NULL; module_obj = create_module_object (context); if (!define_import(context, obj, module_obj, name)) goto out; if (!import_file(context, name, file, module_obj)) goto out; full_path = g_file_get_parse_name (file); if (!define_meta_properties(context, module_obj, full_path, name, obj)) goto out; if (!seal_import(context, obj, name)) goto out; retval = JS_TRUE; out: if (!retval) cancel_import(context, obj, name); g_free (full_path); return retval; }
static JSObject * load_module_init(JSContext *context, JSObject *in_object, std::string &full_path) { JSObject *module_obj; JSBool found; jsid module_init_name; /* First we check if js module has already been loaded */ module_init_name = gjs_context_get_const_string(context, GJS_STRING_MODULE_INIT); if (JS_HasPropertyById(context, in_object, module_init_name, &found) && found) { jsval module_obj_val; if (JS_GetPropertyById(context, in_object, module_init_name, &module_obj_val)) { return JSVAL_TO_OBJECT(module_obj_val); } } module_obj = create_module_object (context); if (!import_file (context, "__init__", full_path, module_obj)) std::cout << "error\n"; if (!JS_DefinePropertyById(context, in_object, module_init_name, OBJECT_TO_JSVAL(module_obj), NULL, NULL, GJS_MODULE_PROP_FLAGS & ~JSPROP_PERMANENT)) std::cout << "error\n"; return module_obj; }
static JSObject * load_module_init(JSContext *context, JSObject *in_object, const char *full_path) { JSObject *module_obj; JSBool found; jsid module_init_name; GFile *file; /* First we check if js module has already been loaded */ module_init_name = gjs_context_get_const_string(context, GJS_STRING_MODULE_INIT); if (!is_extension_module (full_path) && JS_HasPropertyById(context, in_object, module_init_name, &found) && found) { jsval module_obj_val; if (JS_GetPropertyById(context, in_object, module_init_name, &module_obj_val)) { return JSVAL_TO_OBJECT(module_obj_val); } } module_obj = create_module_object (context); file = g_file_new_for_commandline_arg(full_path); if (!import_file (context, "__init__", file, module_obj)) goto out; if (!JS_DefinePropertyById(context, in_object, module_init_name, OBJECT_TO_JSVAL(module_obj), NULL, NULL, GJS_MODULE_PROP_FLAGS & ~JSPROP_PERMANENT)) goto out; out: g_object_unref (file); return module_obj; }