Example #1
0
 public ModuleLoader(IScriptEvaluator evaluator,
     Dictionary<string, Module> nativeModules,
     Dictionary<string, IModuleCompiler> compilers,
     IModulePathResolver pathResolver)
 {
     Evaluator = evaluator;
     NativeModules = nativeModules;
     LoadedModules = new Dictionary<string, Module>(StringComparer.OrdinalIgnoreCase);
     Compilers = compilers;
     PathResolver = pathResolver;
 }
Example #2
0
 public ModuleLoader(V8ScriptEngine evaluator,
                     Dictionary <string, Module> nativeModules,
                     Dictionary <string, IModuleCompiler> compilers,
                     IModulePathResolver pathResolver)
 {
     Evaluator     = evaluator;
     NativeModules = nativeModules;
     LoadedModules = new Dictionary <string, Module>(StringComparer.OrdinalIgnoreCase);
     Compilers     = compilers;
     PathResolver  = pathResolver;
 }
Example #3
0
        public RShipCore(IModulePathResolver pathResolver, IModuleLoaderFactory loaderFactory)
        {
            engine = new V8ScriptEngine(V8ScriptEngineFlags.DisableGlobalMembers)
            {
                DefaultAccess = ScriptAccess.Full,
                SuppressExtensionMethodEnumeration = true,
                AllowReflection = true
            };

            Engine            = engine;
            this.pathResolver = pathResolver;
            NativeModules     = new Dictionary <string, Module>();
            Compilers         = new Dictionary <string, IModuleCompiler>();
            loader            = loaderFactory.Create(Engine, NativeModules, Compilers, pathResolver);

            Console = new VirtualConsole.Console(null, Engine);
            StdOut  = new StdOut.StdOut();

            var scriptCompiler = new ScriptCompiler();

            Compilers[".ship"] = scriptCompiler;
            Compilers[".js"]   = scriptCompiler;
            Compilers[".json"] = new JsonCompiler();
            Compilers[".dll"]  = new DllCompiler();
            coreModule         = new NativeModule("core", loader, this);

            NativeModules["core"]    = coreModule;
            NativeModules["console"] = new NativeModule("console", loader, Console);
            NativeModules["stdout"]  = new NativeModule("stdout", loader, StdOut);
            NativeModules["cast"]    = new NativeModule("cast", loader, new TypeCasts());
            NativeModules["timer"]   = new NativeModule("timer", loader, new TimerController(Console.ErrStream));
            NativeModules["host"]    = new NativeModule("host", loader, new HostFunctions());
            NativeModules["xhost"]   = new NativeModule("xhost", loader, new ExtendedHostFunctions());
            NativeModules["async"]   = new NativeModule("async", loader, new Async(engine));

            foreach (var script in ScriptModules.Scripts.Keys)
            {
                NativeModules.Add(script, new ScriptModule(script, loader));
            }

            engine.Script.core    = this;
            engine.Script.console = Console;
            engine.Script.EngineInternal.isVoid = new Func <object, bool>(obj => obj is VoidResult);
            ExecuteWrapped(@"
                Object.defineProperty(this, 'global', { value: this, enumerable: true });
                var engineInternal = this.EngineInternal;
                delete this.EngineInternal;
                Object.defineProperty(this, 'EngineInternal', { value: engineInternal });
            ");

            Sleeping    = true;
            disposePipe = new PipeableStream(engine);
        }
Example #4
0
        public V8EngineCore(IModulePathResolver pathResolver, IModuleLoaderFactory loaderFactory, int iDebuggingPort)
        {
            // デバッグありモード
            if (iDebuggingPort > 0)
            {
                engine = new V8ScriptEngine(V8ScriptEngineFlags.EnableDebugging, iDebuggingPort);
            }
            else
            {
                engine = new V8ScriptEngine();
            }

            engine.DefaultAccess = ScriptAccess.Full;
            engine.SuppressExtensionMethodEnumeration = true;
            engine.AllowReflection = true;

            Engine            = engine;
            this.pathResolver = pathResolver;
            NativeModules     = new Dictionary <string, Module>();
            Compilers         = new Dictionary <string, IModuleCompiler>();
            loader            = loaderFactory.Create(Engine, NativeModules, Compilers, pathResolver);

            var scriptCompiler = new ScriptCompiler();

            Compilers[".js"]   = scriptCompiler;
            Compilers[".json"] = new JsonCompiler();
            Compilers[".dll"]  = new DllCompiler();
            coreModule         = new NativeModule("core", loader, this);

            NativeModules["core"] = coreModule;
            //            NativeModules["host"] = new NativeModule("host", loader, new HostFunctions());
            //            NativeModules["xhost"] = new NativeModule("xhost", loader, new ExtendedHostFunctions());
            NativeModules["host"] = new NativeModule("host", loader, new ExtendedHostFunctions());

            engine.AddHostObject("clr", new HostTypeCollection("mscorlib", "System", "System.Core"));
            engine.AddHostObject("host", new ExtendedHostFunctions());

            foreach (var script in ScriptModules.Scripts.Keys)
            {
                NativeModules.Add(script, new ScriptModule(script, loader));
            }

            engine.Script.core = this;
            engine.Script.EngineInternal.isVoid = new Func <object, bool>(obj => obj is VoidResult);
            ExecuteWrapped(@"
                Object.defineProperty(this, 'global', { value: this, enumerable: true });
                var engineInternal = this.EngineInternal;
                delete this.EngineInternal;
                Object.defineProperty(this, 'EngineInternal', { value: engineInternal });
            ");

            Sleeping = true;
        }
Example #5
0
        public RShipCore(IScriptEngine engine, IModulePathResolver pathResolver, IModuleLoaderFactory loaderFactory)
        {
            this.engine = engine;
            Evaluator = engine;
            engine.DefaultAccess = ScriptAccess.None;
            this.pathResolver = pathResolver;
            NativeModules = new Dictionary<string, Module>();
            Compilers = new Dictionary<string, IModuleCompiler>();
            loader = loaderFactory.Create(Evaluator, NativeModules, Compilers, pathResolver);

            Console = new VirtualConsole.Console(null, Evaluator);
            StdOut = new StdOut.StdOut();

            CommandPipe = new CommandPipe(this);

            Compilers[".ship"] = Compilers[".js"] = new ScriptCompiler();
            Compilers[".json"] = new JsonCompiler();
            Compilers[".dll"] = new DllCompiler();
            coreModule = new NativeModule("core", loader, this);
            NativeModules["core"] = coreModule;
            NativeModules["console"] = new NativeModule("console", loader, Console);
            NativeModules["stdout"] = new NativeModule("stdout", loader, StdOut);
            NativeModules["host"] = new NativeModule("host", loader, engine.CreateHostFunctions());
            NativeModules["xhost"] = new NativeModule("xhost", loader, engine.CreateExtendedHostFunctions());
            foreach (var script in ScriptModules.Scripts.Keys)
            {
                NativeModules.Add(script, new ScriptModule(script, loader));
            }

            engine.Script.EngineInternal.isVoid = new Func<object, bool>(obj => obj is VoidResult);
            ExecuteWrapped(@"
                Object.defineProperty(this, 'global', { value: this, enumerable: true });
                var engineInternal = this.EngineInternal;
                delete this.EngineInternal;
                Object.defineProperty(this, 'EngineInternal', { value: engineInternal });
            ");

            Sleeping = true;
        }
Example #6
0
 public IModuleLoader Create(V8ScriptEngine evaluator, Dictionary <string, Module> nativeModules,
                             Dictionary <string, IModuleCompiler> compilers,
                             IModulePathResolver pathResolver)
 {
     return(new ModuleLoader(evaluator, nativeModules, compilers, pathResolver));
 }
 public IModuleLoader Create(IScriptEvaluator evaluator, Dictionary<string, Module> nativeModules, Dictionary<string, IModuleCompiler> compilers,
     IModulePathResolver pathResolver)
 {
     return new ModuleLoader(evaluator, nativeModules, compilers, pathResolver);
 }