/// <summary> /// Сгенерировать текст нового объекта /// </summary> /// <param name="splitterObjectType"></param> /// <param name="param"></param> public void RunSplit(eSplitterObjectType splitterObjectType, eSplitParam param) { string FinalObjectText = string.Empty; // Получаем текст объекта switch (splitterObjectType) { case eSplitterObjectType.OldSpec: FinalObjectText = RunSplitOldSpec(); break; case eSplitterObjectType.OldBody: FinalObjectText = RunSplitOldBody(); break; case eSplitterObjectType.NewSpec: FinalObjectText = RunSplitNewSpec(param.HasFlag(eSplitParam.GenerateHeader)); break; case eSplitterObjectType.NewBody: FinalObjectText = RunSplitNewBody(param.HasFlag(eSplitParam.GenerateHeader)); break; default: break; } // Заменяем двойные пробелы - одинарными FinalObjectText = Regex.Replace(FinalObjectText, "\r\n\\s*\r\n\\s*\r\n", "\r\n\r\n"); // Копируем текст в буфер if (param.HasFlag(eSplitParam.CopyToClipBoard)) { Clipboard.SetText(FinalObjectText); } // Открываем текст в новом окне if (param.HasFlag(eSplitParam.OpenNewWindow)) { TextWindow tw = new TextWindow(FinalObjectText); tw.Show(); } // Обновляем репозиторий if (param.HasFlag(eSplitParam.DirectlyUpdateRep)) { RepositoryObject repositoryObject; if (splitterObjectType.IsNew()) { repositoryObject = new RepositoryObject(Config.Instanse().NewPackageName, Config.Instanse().NewPackageOwner, splitterObjectType.IsSpec() ? eRepositoryObjectType.Package_Spec : eRepositoryObjectType.Package_Body); } else { repositoryObject = splitterObjectType.IsSpec() ? _package.repositoryPackage.GetObjectSpec() : _package.repositoryPackage.GetObjectBody(); /* Мы должны одновременно обновить в репозитории и спеку и тело * Последовательно мы это сделать не можем, так как генерация текста зависит от обоих частей * Обновляем соседнюю часть: */ var SecondParttext = splitterObjectType.IsSpec() ? RunSplitOldBody() : RunSplitOldSpec(); var SecondPartObj = splitterObjectType.IsSpec() ? _package.repositoryPackage.GetObjectBody() : _package.repositoryPackage.GetObjectSpec(); DBRep.Instance().SaveTextToFile(SecondParttext, SecondPartObj); } DBRep.Instance().SaveTextToFile(FinalObjectText, repositoryObject); } }
private static string GetText(eSplitterObjectType splitterObjectType, RepositoryPackage oldRepositoryPackage, RepositoryPackage newRepositoryPackage) { var repositoryPackage = splitterObjectType.IsNew() ? newRepositoryPackage : oldRepositoryPackage; var path = splitterObjectType.IsSpec() ? repositoryPackage.SpecRepFullPath : repositoryPackage.BodyRepFullPath; return(File.ReadAllText(path)); }