/// <summary> /// Initializes compiler /// </summary> private void Initialize() { if (_initialized) { return; } lock (_initializationSynchronizer) { if (_initialized) { return; } _jsEngine.EmbedHostObject(LESS_ENVIRONMENT_VARIABLE_NAME, LessEnvironment.Instance); _jsEngine.EmbedHostObject(VIRTUAL_FILE_MANAGER_VARIABLE_NAME, _virtualFileManager); Assembly assembly = GetType().Assembly; _jsEngine.ExecuteResource(RESOURCES_NAMESPACE + "." + LESS_LIBRARY_FILE_NAME, assembly); _jsEngine.ExecuteResource(RESOURCES_NAMESPACE + "." + LESSC_HELPER_FILE_NAME, assembly); _initialized = true; } }
CustomScriptInstance(IJsEngine engine) { this.engine = engine; engine.EmbedHostObject("_debug", new Action <object>(debug)); engine.EmbedHostObject("_info", new Action <object>(push)); engine.EmbedHostObject("_error", new Action <object>(push_error)); engine.EmbedHostObject("_warning", new Action <object>(push_warning)); engine.EmbedHostObject("_register", new Action <string, string, string, string>(register)); }
static void Main(string[] args) { var jsEngineSwitcher = JsEngineSwitcher.Current; jsEngineSwitcher.EngineFactories.Add(new ChakraCoreJsEngineFactory()); jsEngineSwitcher.DefaultEngineName = ChakraCoreJsEngine.EngineName; ServiceRow b = new ServiceRow(); b.Add("test", "test1"); ServiceRow a = new ServiceRow(b); a.Add("c1", "c2"); b.Add("arr", new List <ServiceRow>() { a }); IJsEngine jsEngine = JsEngineSwitcher.Current.CreateDefaultEngine(); jsEngine.EmbedHostType("ServiceRow", typeof(ServiceRow)); jsEngine.EmbedHostObject("root", a); jsEngine.Execute(@" var a = root.GetParent(); var t= a.GetListItem('arr',0); a.SetItem('test',t.GetItem('c1'));"); }
public override object Evaluate(string script, params KeyValuePair <string, object>[] kvp) { object result = null; if (kvp != null) { foreach (var obj in kvp) { //判定是否为值类型 if (obj.Value.GetType().IsValueType || obj.Value is string) { js.SetVariableValue(obj.Key, obj.Value); } else { js.EmbedHostObject(obj.Key, obj.Value); } } } try { result = js.Evaluate(script); } catch (JavaScriptEngineSwitcher.Core.JsException jse) { if (jse.InnerException != null) { if (jse.InnerException is VroomJs.JsException) { var vjse = (VroomJs.JsException)jse.InnerException; throw new HostJsException(jse.Message, script, vjse.Line, vjse.Column); } } else { throw new HostJsException(jse.Message, script, 0, 0); } } return(result); }
/// <summary> /// Initializes compiler /// </summary> private void Initialize() { if (_initializedFlag.Set()) { _jsEngine.EmbedHostObject(VIRTUAL_FILE_MANAGER_VARIABLE_NAME, _virtualFileManager); Assembly assembly = GetType().Assembly; _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(TYPESCRIPT_LIBRARY_FILE_NAME), assembly); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(TSC_HELPER_FILE_NAME), assembly); } }
/// <summary> /// Initializes CSS autoprefixer /// </summary> private void Initialize() { if (_initializedFlag.Set()) { _jsEngine.EmbedHostObject(COUNTRY_STATISTICS_SERVICE_VARIABLE_NAME, CountryStatisticsService.Instance); Assembly assembly = GetType().Assembly; _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(AUTOPREFIXER_LIBRARY_FILE_NAME), assembly); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(AUTOPREFIXER_HELPER_FILE_NAME), assembly); } }
/// <summary> /// Initializes a Sass compiler /// </summary> private void InitializeCompiler() { if (_initialized) { return; } lock (_initializationSynchronizer) { if (_initialized) { return; } string serializedOptions = _jsonSerializer.SerializeObject(_options); try { _jsEngine = _createJsEngineInstance(); _jsEngine.EmbedHostObject(FILE_MANAGER_VARIABLE_NAME, _fileManager); _jsEngine.SetVariableValue(CURRENT_OS_PLATFORM_NAME, GetCurrentOSPlatformName()); Assembly assembly = this.GetType() #if !NET40 .GetTypeInfo() #endif .Assembly ; _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(ES6_POLYFILLS_FILE_NAME), assembly, true); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(SASS_LIBRARY_FILE_NAME), assembly, true); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(SASS_HELPER_FILE_NAME), assembly, true); _jsEngine.Execute($"var sassHelper = new SassHelper({serializedOptions});"); _version = _jsEngine.Evaluate <string>("SassHelper.getVersion();"); } catch (JsEngineLoadException e) { throw SassErrorHelpers.WrapCompilerLoadException(e); } catch (JsException e) { throw SassErrorHelpers.WrapCompilerLoadException(e, true); } _initialized = true; } }
static void Main(string[] args) { Console.WriteLine("Hello World!"); var engineSwitcher = JsEngineSwitcher.Current; engineSwitcher.EngineFactories.Add(new ChakraCoreJsEngineFactory()); engineSwitcher.DefaultEngineName = ChakraCoreJsEngine.EngineName; IJsEngine engine = JsEngineSwitcher.Current.CreateDefaultEngine(); engine.EmbedHostType("Test", typeof(Test)); var t = new Test(); engine.EmbedHostObject("TestA", t); engine.Execute("var a=1+3;if(1)a=5;TestA.Name=a"); Console.WriteLine(t.Name); Console.ReadKey(); }
/// <summary> /// Initializes a Autoprefixer /// </summary> private void Initialize() { if (_initialized) { return; } lock (_initializationSynchronizer) { if (_initialized) { return; } try { _jsEngine.EmbedHostObject(COUNTRY_STATISTICS_SERVICE_VARIABLE_NAME, CountryStatisticsService.Instance); Assembly assembly = this.GetType() #if !NET40 .GetTypeInfo() #endif .Assembly ; _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(AUTOPREFIXER_LIBRARY_FILE_NAME), assembly); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(AUTOPREFIXER_HELPER_FILE_NAME), assembly); _jsEngine.Execute($"var autoprefixerHelper = new AutoprefixerHelper({_serializedOptions});"); } catch (JsException e) { throw AutoprefixerErrorHelpers.WrapAutoprefixerLoadException(e, true); } _initialized = true; } }
/// <summary> /// Initializes compiler /// </summary> private void Initialize() { if (_initialized) { return; } lock (_initializationSynchronizer) { if (_initialized) { return; } _jsEngine.EmbedHostObject(VIRTUAL_FILE_MANAGER_VARIABLE_NAME, _virtualFileManager); Assembly assembly = GetType().Assembly; _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(TYPESCRIPT_LIBRARY_FILE_NAME), assembly); _jsEngine.ExecuteResource(ResourceHelpers.GetResourceName(TSC_HELPER_FILE_NAME), assembly); _initialized = true; } }
public void EmbedHostObject(string itemName, object value) { CheckDisposed(); _engine.EmbedHostObject(itemName, value); }
public void RegisterJsObject(string itemName, object value) { jsEngine.EmbedHostObject(itemName, value); }