/// <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); } }
public void SaveTextToFile(string text, RepositoryObject repositoryObject) { var ownerPath = Path.Combine(RepositoryPath, repositoryObject.Owner); if (!Directory.Exists(ownerPath)) { Directory.CreateDirectory(ownerPath); } File.WriteAllText(repositoryObject.RepFullPath, text); }
public static void ReadFileLines() { RepositoryObject obj = new RepositoryObject("text13k", "source", eRepositoryObjectType.Text); DBRep rep = DBRep.Instance(); rep.RepositoryPath = AppDomain.CurrentDomain.BaseDirectory; string s = DBRep.Instance().GetTextOfFile(obj, 10, 18); Console.WriteLine(s); Assert.Pass(); }
public override bool Equals(object obj) { RepositoryObject other = obj as RepositoryObject; if (other == null) { return(false); } return(key.Equals(other.key) && hash.Equals(other.hash)); }
public string GetTextOfFile(RepositoryObject file, int LineBeg, int LineEnd, int?LastPos = null) { return(GetTextOfFile(file.RepFullPath, LineBeg, LineEnd, LastPos)); }