Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }