//-------------------------------------------------------------------------------------------------- public static ScriptInstance LoadScriptFromFile(string filename, ScriptContext contextInstance, bool forceReload = false) { if (!File.Exists(filename)) { Messages.Error("Script file does not exist: " + filename); } ScriptInstance scriptInstance; if (!forceReload) { scriptInstance = ScriptCache.Find(filename); if (scriptInstance != null) { return(scriptInstance); } } scriptInstance = new ScriptInstance(filename, contextInstance); if (ScriptCompiler.Compile(scriptInstance)) { return(scriptInstance); } return(null); }
//-------------------------------------------------------------------------------------------------- internal static bool Compile(ScriptInstance scriptInstance) { var compiler = new ScriptCompiler(scriptInstance); if (!compiler._Compile()) { return(false); } ScriptCache.Add(scriptInstance, compiler._FileList); return(true); }
//-------------------------------------------------------------------------------------------------- internal static void Add(ScriptInstance scriptInstance, List <string> fileList) { var entry = new CachedScript { Instance = scriptInstance, FileInfos = new CachedScriptFileInfo[fileList.Count], }; for (var i = 0; i < fileList.Count; i++) { var fi = new FileInfo(fileList[i]); var info = new CachedScriptFileInfo() { FileName = fileList[i], Length = fi.Length, LastWriteTime = fi.LastWriteTimeUtc }; entry.FileInfos[i] = info; } _CachedScripts[scriptInstance.Path] = entry; }
//-------------------------------------------------------------------------------------------------- ScriptCompiler(ScriptInstance scriptInstance) { _ScriptInstance = scriptInstance; }