コード例 #1
0
ファイル: Compiler.cs プロジェクト: Vic92548/BuckShot_Lang
 public void AddFileLines(string[] FileText, string Path)
 {
     for (int i = 0; i < FileText.Length; i++)
     {
         string[] LinesWords = FileText[i].Split(' ');
         if (LinesWords[0] == "include")
         {
             if (LinesWords[1].Split('.').Length > 1)
             {
                 string[] DataToInclude = System.IO.File.ReadAllLines(Path + '/' + LinesWords[1]);
                 AddFileLines(DataToInclude, Path);
             }
             else
             {
                 foreach (string LocalFile in System.IO.Directory.GetFiles(Path + '/' + LinesWords[1]))
                 {
                     if (LocalFile.Split('.')[1] == "bk")
                     {
                         string[] DataToInclude = System.IO.File.ReadAllLines(LocalFile);
                         AddFileLines(DataToInclude, Path);
                     }
                 }
             }
         }
         else if (LinesWords[0] == "include_all")
         {
             List <string> BrutDataToInclude = new List <string>();
             List <string> FilesName         = SyntaxTools.GetFunctionDatas(LinesWords[1]);
             for (int j = 1; j < FilesName.Count; j++)
             {
                 string[] CurrentFilesPath = System.IO.Directory.GetFiles(Path + '/' + FilesName[j]);
                 for (int k = 0; k < CurrentFilesPath.Length; k++)
                 {
                     string[] CurrentLines = System.IO.File.ReadAllLines(CurrentFilesPath[k]);
                     for (int l = 0; l < CurrentLines.Length; l++)
                     {
                         BrutDataToInclude.Add(CurrentLines[l]);
                     }
                 }
             }
             string[] DataToInclude = BrutDataToInclude.ToArray();
             AddFileLines(DataToInclude, Path);
         }
         else
         {
             FileLines.Add(FileText[i]);
         }
     }
 }
コード例 #2
0
ファイル: Compiler.cs プロジェクト: Vic92548/BuckShot_Lang
        public string GlobalCompile()
        {
            string[] FileText     = System.IO.File.ReadAllLines(FileName);
            string   FileNamePath = "";

            if (FileName.Split('/').Length > 1)
            {
                FileNamePath = FileName.Remove(FileName.Length - FileName.Split('/')[FileName.Split('/').Length - 1].Length - 1);
            }
            else
            {
                FileNamePath = FileName.Remove(FileName.Length - FileName.Split('\\')[FileName.Split('\\').Length - 1].Length - 1);
            }
            string[]   ConfigLines   = System.IO.File.ReadAllLines(FileNamePath + "/config.bk");
            string[]   DataLines     = {};
            WebProject CurrenProject = new WebProject();

            CurrenProject.ProjectStopWatch.Start();
            if (System.IO.File.Exists(FileNamePath + "/data.bk"))
            {
                DataLines = System.IO.File.ReadAllLines(FileNamePath + "/data.bk");
                for (int i = 0; i < DataLines.Length; i++)
                {
                    string[] LocalLine = SyntaxTools.GetNewLine(DataLines[i]).Split('=');
                    CurrenProject.AddData(LocalLine[0], LocalLine[1]);
                }
            }
            this.HTML_Path = FileNamePath + ConfigLines[0].Split('=')[1];
            VerifyFolder(this.HTML_Path);
            this.CSS_Path = FileNamePath + ConfigLines[1].Split('=')[1];
            VerifyFolder(this.CSS_Path);
            bool Started = false;

            WebObject.Base CurrentObject = new WebObject.Base("default", CurrenProject, "", "");
            FileLines = new List <string>();
            AddFileLines(FileText, FileNamePath);
            for (int i = 0; i < FileLines.Count; i++)
            {
                string[] LinesWords = FileLines[i].Split(' ');

                if (LinesWords[0] == "page")
                {
                    CurrentObject = new WebObject.Page(LinesWords[1], CurrenProject, HTML_Path, CSS_Path);
                    Started       = true;
                }
                else if (LinesWords[0] == "object")
                {
                    if (LinesWords[1].Split(':').Length > 1)
                    {
                        string[] LocalWords = LinesWords[1].Split(':');
                        CurrentObject = new WebObject.Base(LocalWords[0], CurrenProject, HTML_Path, CSS_Path);
                        foreach (WebObject.Base LocalObject in CurrenProject.ObjectList)
                        {
                            if (LocalObject.GetName() == LocalWords[1])
                            {
                                CurrentObject.CSS.SetAllProp(LocalObject, LocalObject.CSS.GetAllProp());
                            }
                        }
                    }
                    else
                    {
                        CurrentObject = new WebObject.Base(LinesWords[1], CurrenProject, HTML_Path, CSS_Path);
                    }
                    Started = true;
                }
                else if (Started && LinesWords[0] == "end")
                {
                    CurrentObject.CompileObject();
                    CurrenProject.ObjectList.Add(CurrentObject);
                    Started = false;
                }
                else if (Started)
                {
                    CurrentObject.AddLine(FileLines[i]);
                }
            }
            CurrenProject.DisplayCompileTime();
            return("ExitCode = 0");
        }