private bool GetISourceScript( ISourceManager manager, string statement, string currentPath, bool isInline, out List <ISourceScript> scripts) { string[] vars = Utils.SplitAndRemoveFirst(statement, Separator); scripts = new List <ISourceScript>(); if (vars.Length != 0) { ImportResult importInfo = manager.GetComputingScheme()(vars, currentPath); if (!importInfo) { Logger.Log(LogType.Error, "Invalid Include Statement", 1); return(false); } string filepath = importInfo.GetString("filename"); importInfo.RemoveEntry("filename"); string key = importInfo.GetString("key"); importInfo.RemoveEntry("key"); string originalDefinedName = importInfo.GetString("definedname"); importInfo.RemoveEntry("definedname"); IFileContent cont = new FilePathContent(filepath, originalDefinedName); cont.SetKey(key); if (manager.TryCreateScript(out ISourceScript iss, Separator, cont, importInfo, isInline)) { scripts.Add(iss); } for (int index = scripts.Count - 1; index >= 0; index--) { ISourceScript sourceScript = scripts[index]; if (sourceScript.GetFileInterface().HasValidFilepath&& !Utils.FileExistsRelativeTo(currentPath, sourceScript.GetFileInterface())) { Logger.Log(LogType.Error, $"Could not find File: {sourceScript.GetFileInterface()}", 1); scripts.RemoveAt(index); } } return(true); } return(false); }
private bool GetISourceScript(ISourceManager manager, string statement, string currentPath, out List <ISourceScript> scripts) { var vars = Utils.SplitAndRemoveFirst(statement, Separator); scripts = new List <ISourceScript>(); if (vars.Length != 0) { ImportResult importInfo = manager.GetComputingScheme()(vars, currentPath); if (!importInfo) { this.Error("Invalid Include Statement"); return(false); } string filepath = importInfo.GetString("filename"); importInfo.RemoveEntry("filename"); string key = importInfo.GetString("key"); importInfo.RemoveEntry("key"); if (filepath.EndsWith("\\*") || filepath.EndsWith("/*")) { string[] files = IOCallbacks.Callback.GetFiles(filepath.Substring(0, filepath.Length - 2)); foreach (var file in files) { IFileContent cont = new FilePathContent(file); cont.SetKey(key); if (manager.TryCreateScript(out ISourceScript iss, Separator, cont, importInfo)) { scripts.Add(iss); } } } else { IFileContent cont = new FilePathContent(filepath); cont.SetKey(key); if (manager.TryCreateScript(out ISourceScript iss, Separator, cont, importInfo)) { scripts.Add(iss); } } for (var index = scripts.Count - 1; index >= 0; index--) { var sourceScript = scripts[index]; if (sourceScript.GetFileInterface().HasValidFilepath&& !Utils.FileExistsRelativeTo(currentPath, sourceScript.GetFileInterface())) { this.Error("Could not find File: {0}", sourceScript.GetFileInterface()); scripts.RemoveAt(index); } } return(true); } return(false); }