public override object ExecIdCall(IdFunctionObject f, Context cx, IScriptable scope, IScriptable thisObj, object [] args) { if (!f.HasTag(SCRIPT_TAG)) { return(base.ExecIdCall(f, cx, scope, thisObj, args)); } int id = f.MethodId; switch (id) { case Id_constructor: { string source = (args.Length == 0) ? "" : ScriptConvert.ToString(args [0]); IScript script = compile(cx, source); BuiltinScript nscript = new BuiltinScript(script); ScriptRuntime.setObjectProtoAndParent(nscript, scope); return(nscript); } case Id_toString: { if (thisObj is BuiltinFunction) { return(((BuiltinFunction)thisObj).Decompile(0, 0)); } BuiltinScript real = realThis(thisObj, f); IScript realScript = real.script; if (realScript == null) { return(""); } return(cx.DecompileScript(realScript, 0)); } case Id_exec: { throw Context.ReportRuntimeErrorById("msg.cant.call.indirect", "exec"); } case Id_compile: { BuiltinScript real = realThis(thisObj, f); string source = ScriptConvert.ToString(args, 0); real.script = compile(cx, source); return(real); } } throw new ArgumentException(Convert.ToString(id)); }
internal static new void Init (IScriptable scope, bool zealed) { BuiltinScript obj = new BuiltinScript (null); obj.ExportAsJSClass (MAX_PROTOTYPE_ID, scope, zealed, ScriptableObject.DONTENUM | ScriptableObject.READONLY | ScriptableObject.PERMANENT); }
public override object ExecIdCall (IdFunctionObject f, Context cx, IScriptable scope, IScriptable thisObj, object [] args) { if (!f.HasTag (SCRIPT_TAG)) { return base.ExecIdCall (f, cx, scope, thisObj, args); } int id = f.MethodId; switch (id) { case Id_constructor: { string source = (args.Length == 0) ? "" : ScriptConvert.ToString (args [0]); IScript script = compile (cx, source); BuiltinScript nscript = new BuiltinScript (script); ScriptRuntime.setObjectProtoAndParent (nscript, scope); return nscript; } case Id_toString: { if (thisObj is BuiltinFunction) return ((BuiltinFunction)thisObj).Decompile (0, 0); BuiltinScript real = realThis (thisObj, f); IScript realScript = real.script; if (realScript == null) { return ""; } return cx.DecompileScript (realScript, 0); } case Id_exec: { throw Context.ReportRuntimeErrorById ("msg.cant.call.indirect", "exec"); } case Id_compile: { BuiltinScript real = realThis (thisObj, f); string source = ScriptConvert.ToString (args, 0); real.script = compile (cx, source); return real; } } throw new ArgumentException (Convert.ToString (id)); }
internal static new void Init(IScriptable scope, bool zealed) { BuiltinScript obj = new BuiltinScript (null); obj.ExportAsJSClass (MAX_PROTOTYPE_ID, scope, zealed); }
internal static new void Init(IScriptable scope, bool zealed) { BuiltinScript obj = new BuiltinScript(null); obj.ExportAsJSClass(MAX_PROTOTYPE_ID, scope, zealed, ScriptableObject.DONTENUM | ScriptableObject.READONLY | ScriptableObject.PERMANENT); }
internal static new void Init(IScriptable scope, bool zealed) { BuiltinScript obj = new BuiltinScript(null); obj.ExportAsJSClass(MAX_PROTOTYPE_ID, scope, zealed); }