예제 #1
0
        protected override void Create()
        {
            PathIdentification();

            if (Core == null)
            {
                Core = new List <Element>();
                //Формирую основую базу
                foreach (var file in AllFilesDir)
                {
                    if (file.StartsWith("Data", StringComparison.OrdinalIgnoreCase))
                    {
                        Core.Add(new Element("Data", file.Substring(5), Path.Combine(AbsolutePath, "Data", file.Substring(5))));
                    }
                }
            }

            var rootDirsAssembly  = new List <string>();
            var rootFilesAssembly = new List <string>();

            foreach (var item in Core)
            {
                //Получаю корневые директории сборки, нужны для обработки путей Исходников
                if (item.EntryPath.Split('\\').Length > 1 && !rootDirsAssembly.Contains(item.EntryPath.Split('\\')[0]))
                {
                    rootDirsAssembly.Add(item.EntryPath.Split('\\')[0]);
                }
                //Получаю корневые файлы сборки, нужны для обработки путей Исходников
                if (item.EntryPath.Split('\\').Length == 1)
                {
                    rootFilesAssembly.Add(item.EntryPath);
                }
            }

            //Записываю корневые файлы и папки в синглтон
            RootAssembly.GetInstance(rootDirsAssembly, rootFilesAssembly);
        }
예제 #2
0
        private void Create(List <Element> preprocessing)
        {
            Core = new List <Element>();
            var noRepeat          = new List <string>();
            var assemblyRootDirs  = RootAssembly.GetInstance().RootDirsAssembly;
            var assemblyRootFiles = RootAssembly.GetInstance().RootFilesAssembly;

            foreach (var item in preprocessing)
            {
                var itemSplit     = item.EntryPath.Split('\\');
                var itemJoin      = new List <string>();
                var flagRootFile  = false;
                var flagPathInMod = false;

                for (var index = 0; index < itemSplit.Length; index++)
                {
                    var word = itemSplit[index];

                    //Если последнее слово - это имя корневого файла, добавляю его в базу
                    if (index == itemSplit.Length - 1)
                    {
                        foreach (var file in assemblyRootFiles)
                        {
                            if (String.Compare(word, file, StringComparison.OrdinalIgnoreCase) != 0 ||
                                noRepeat.Contains(word))
                            {
                                continue;
                            }
                            noRepeat.Add(word);
                            Core.Add(new Element(item.NameMod, word, item.SpecialPath));
                            flagRootFile = true;
                            break;
                        }
                    }

                    //Пропускаю все слова, которые не равны директориям из сборки
                    if (!flagPathInMod && !flagRootFile)
                    {
                        foreach (var rootDir in assemblyRootDirs)
                        {
                            if (String.Compare(word, rootDir, StringComparison.OrdinalIgnoreCase) == 0)
                            {
                                flagPathInMod = true;
                            }
                        }
                    }

                    //Собираю все слова, начиная с директорий в сборке
                    if (flagPathInMod)
                    {
                        itemJoin.Add(word);
                    }
                }

                var relativePathJoin = string.Join("\\", itemJoin);

                if (relativePathJoin == string.Empty || noRepeat.Contains(relativePathJoin))
                {
                    continue;
                }
                noRepeat.Add(relativePathJoin);
                Core.Add(new Element(item.NameMod, relativePathJoin, item.SpecialPath));
            }
        }
예제 #3
0
 public static RootAssembly GetInstance(List <string> rootDirsAssembly = null, List <string> rootFilesAssembly = null)
 {
     return(instance ?? (instance = new RootAssembly(rootDirsAssembly, rootFilesAssembly)));
 }