public ScriptContext() { Pages = new SharpPages(this); PageFormats.Add(new HtmlPageFormat()); ScriptMethods.Add(new DefaultScripts()); ScriptMethods.Add(new HtmlScripts()); Plugins.Add(new DefaultScriptBlocks()); Plugins.Add(new HtmlScriptBlocks()); FilterTransformers[ScriptConstants.HtmlEncode] = HtmlPageFormat.HtmlEncodeTransformer; FilterTransformers["end"] = stream => (TypeConstants.EmptyByteArray.InMemoryStream() as Stream).InTask(); FilterTransformers["buffer"] = stream => stream.InTask(); DefaultScriptLanguage = SharpScript.Language; ScriptLanguages.Add(ScriptTemplate.Language); ScriptLanguages.Add(ScriptCode.Language); Args[nameof(ScriptConfig.DefaultCulture)] = ScriptConfig.CreateCulture(); Args[nameof(ScriptConfig.DefaultDateFormat)] = ScriptConfig.DefaultDateFormat; Args[nameof(ScriptConfig.DefaultDateTimeFormat)] = ScriptConfig.DefaultDateTimeFormat; Args[nameof(ScriptConfig.DefaultTimeFormat)] = ScriptConfig.DefaultTimeFormat; Args[nameof(ScriptConfig.DefaultFileCacheExpiry)] = ScriptConfig.DefaultFileCacheExpiry; Args[nameof(ScriptConfig.DefaultUrlCacheExpiry)] = ScriptConfig.DefaultUrlCacheExpiry; Args[nameof(ScriptConfig.DefaultIndent)] = ScriptConfig.DefaultIndent; Args[nameof(ScriptConfig.DefaultNewLine)] = ScriptConfig.DefaultNewLine; Args[nameof(ScriptConfig.DefaultJsConfig)] = ScriptConfig.DefaultJsConfig; Args[nameof(ScriptConfig.DefaultStringComparison)] = ScriptConfig.DefaultStringComparison; Args[nameof(ScriptConfig.DefaultTableClassName)] = ScriptConfig.DefaultTableClassName; Args[nameof(ScriptConfig.DefaultErrorClassName)] = ScriptConfig.DefaultErrorClassName; }
/// <summary> /// Returns the results of the compilation /// </summary> /// <param name="Source"></param> /// <param name="Reference"></param> /// <param name="Language"></param> /// <returns></returns> public static CompilerResults CompileScript(string Source, string Reference, ScriptLanguages Language) { CodeDomProvider provider = null; switch (Language) { case ScriptLanguages.VB: provider = new Microsoft.VisualBasic.VBCodeProvider(); break; case ScriptLanguages.CSharp: provider = new Microsoft.CSharp.CSharpCodeProvider(); break; } return(CompileScript(Source, Reference, provider)); }
public ScriptContext Init() { if (HasInit) { return(this); } HasInit = true; if (InsertScriptMethods.Count > 0) { ScriptMethods.InsertRange(0, InsertScriptMethods); } if (InsertScriptBlocks.Count > 0) { ScriptBlocks.InsertRange(0, InsertScriptBlocks); } if (InsertPlugins.Count > 0) { Plugins.InsertRange(0, InsertPlugins); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { if (typeof(IScriptPlugin).IsAssignableFrom(type)) { if (Plugins.All(x => x.GetType() != type)) { Container.AddSingleton(type); var plugin = (IScriptPlugin)Container.Resolve(type); Plugins.Add(plugin); } } } } Args[ScriptConstants.Debug] = DebugMode; Container.AddSingleton(() => this); Container.AddSingleton(() => Pages); ScriptLanguagesArray = ScriptLanguages.Distinct().ToArray(); foreach (var scriptLanguage in ScriptLanguagesArray) { scriptLanguagesMap[scriptLanguage.Name] = scriptLanguage; if (scriptLanguage is IConfigureScriptContext init) { init.Configure(this); } } var beforePlugins = Plugins.OfType <IScriptPluginBefore>(); foreach (var plugin in beforePlugins) { plugin.BeforePluginsLoaded(this); } foreach (var plugin in Plugins) { plugin.Register(this); } OnAfterPlugins?.Invoke(this); foreach (var type in ScanTypes) { ScanType(type); } foreach (var assembly in ScanAssemblies.Safe()) { foreach (var type in assembly.GetTypes()) { ScanType(type); } } foreach (var method in ScriptMethods) { InitMethod(method); } foreach (var block in ScriptBlocks) { InitBlock(block); blocksMap[block.Name] = block; } ScriptNamespaces = ScriptNamespaces.Distinct().ToList(); var allTypes = new List <Type>(ScriptTypes); foreach (var asm in ScriptAssemblies) { allTypes.AddRange(asm.GetTypes()); } foreach (var type in allTypes) { if (!ScriptTypeNameMap.ContainsKey(type.Name)) { ScriptTypeNameMap[type.Name] = type; } var qualifiedName = ProtectedMethods.typeQualifiedName(type); if (!ScriptTypeQualifiedNameMap.ContainsKey(qualifiedName)) { ScriptTypeQualifiedNameMap[qualifiedName] = type; } } var afterPlugins = Plugins.OfType <IScriptPluginAfter>(); foreach (var plugin in afterPlugins) { plugin.AfterPluginsLoaded(this); } return(this); }