private void ReturnDefaultText() { if (returnText.Count == 0) { TagModified = TagParsingEnum.Return; ParamModified = null; returnText.Add(GetDefaultReturn()); DisplayNewWin(this.returnText, ref this.returnText); this.hasReturn = true; } }
private void DisplayCompareWin(bool _isDefault, List <string> otherTxt, ref List <string> CurrentTxt, TagParsingEnum tag, bool displayNew = true, ParameterComment paramModified = null) { TagModified = tag; ParamModified = paramModified; // On affiche une interface utilisateur if (displayNew == true /*&& MainWindow.IsClose == false*/) { // Si nouveau texte vierge if (IsEmptyList(CurrentTxt) == true) { // On affiche la boite de dialogue nouveau DisplayNewWin(otherTxt, ref CurrentTxt); return; } // Si c'est le texte par défaut pour le précédent commentaire else if (_isDefault == true) { // On garde le texte return; } // On compare l'ancien et le nouveau texte if (DisplayCompareUI != null) { DisplayCompareUI(this, otherTxt, ref CurrentTxt); } } else { // Pas de texte à fusionner if (IsEmptyList(otherTxt) == true && IsEmptyList(CurrentTxt) == true) { return; } // On garde le texte précédent if (IsEmptyList(otherTxt) == false && IsEmptyList(CurrentTxt) == true) { CurrentTxt.AddRange(otherTxt); return; } // Pour le cas inverse on ne fait rien! } }
// Add a parameter tag private void AddParameterTag(CSharpOutputVisitor formatter, ParameterComment name) { List <string> tmp = name.GetText(); // Pour un commentaire paramètre multi-ligne if (IsMultipleTextLines(ref tmp) == true) { // Start of the tag formatter.WriteComment(CommentType.Documentation, name.StartTag()); // La description du bloc WriteMultipleDocumentationLine(formatter, ref tmp); // End of the tag formatter.WriteComment(CommentType.Documentation, name.EndTag()); } else { formatter.WriteComment(CommentType.Documentation, name.InOneLine()); } }
// To add a parameter private void AddParameter(string Name, string Result, bool multiline, bool generic) { List <string> tmp = null; if (string.IsNullOrEmpty(Result) == false) { // Conversion en liste tmp = new List <string>(); if (multiline == true) { ListExtension.TextToList(ref tmp, Result); } else { tmp.Add(Result); } } ParameterComment Temp = new ParameterComment(Name, tmp, generic); parameters.Add(Temp); }
// To merge a original documentation with the new one public bool Merge(Comments others) { bool isMerged = false; // Est-ce-que les 2 codenames sont égaux? if (this.codeName != others.codeName || string.IsNullOrEmpty(this.codeName) == true || string.IsNullOrWhiteSpace(this.codeName) == true || string.IsNullOrEmpty(others.codeName) == true || string.IsNullOrWhiteSpace(others.codeName) == true) { // Ce n'est pas normal! return(false); } others.SetDefaultForEmpty(); // On compare les textes // Si texte pareil, ne rien faire // Si texte différent, Réaliser une interface pour l'utilisateur pour réaliser le choix // , Si texte d'origine ou vierge est la traduction par défaut // proposé une interface pour saisir commentaire DisplayCompareWin(others.isDefault, others.comments, ref this.comments, TagParsingEnum.Summary); // Si pas de return, on vide le texte if (this.hasReturn == false && others.hasReturn == false) { returnText.Clear(); } else { // Est-ce-que les 2 commentaires ont des return? if (others.hasReturn == true) { // On doit comparer le texte des returns // Le texte des valeurs de retour // Texte pareil, ne rien faire // Si texte différent, Réaliser une interface pour l'utilisateur pour réaliser le choix // , Si texte d'origine ou vierge est la traduction par défaut // proposé une interface pour saisir commentaire if (this.returnText.SequenceEqual(others.returnText) == false) { // Si le texte du précédent return est vierge if (returnText.Count == 0) { // Selon la valeur du commentaire pour le return existant if (others.returnText.Count == 0) { returnText.Add(GetDefaultReturn()); } else { this.returnText = others.returnText; } TagModified = TagParsingEnum.Return; ParamModified = null; DisplayNewWin(this.returnText, ref this.returnText); this.hasReturn = true; } } else { ReturnDefaultText(); } } // Sinon on met une valeur par défaut si nécessaire else { ReturnDefaultText(); } } // Si pas de propriété on vide le texte if (this.isProperty == false) { valueText.Clear(); } // Est-ce-que ceux sont 2 propriétés ou pas? else if (others.isProperty == this.isProperty) { // Le texte des valeurs des propriétés // Si texte pareil, ne rien faire // Si texte différent, Réaliser une interface pour l'utilisateur pour réaliser le choix // , Si texte d'origine ou vierge est la traduction par défaut // proposé une interface pour saisir commentaire DisplayCompareWin(others.isDefault, others.valueText, ref this.valueText, TagParsingEnum.Property, false); } // Les paramètres à vérifier // Si paramètres pareil, ne rien faire. // Si paramètre différent, les paramètres bon sont dans this obligatoirement // , Recopier les commentaires des memes paramètres nom et type de valeur // , Les paramètres supprimés, la doc est à supprimer aussi if (this.parameters.SequenceEqual(others.parameters) == false) { // Pour chaque paramètres dans la nouvelle documentation foreach (ParameterComment newparam in parameters) { // On recherche le meme paramétre dans l'ancienne documentation List <ParameterComment> Found = others.parameters.FindAll(delegate(ParameterComment itm) { return(itm.Name == newparam.Name); }); // Si plusieurs paramètre, il y a un problème switch (Found.Count) { case 0: TagModified = TagParsingEnum.Parameters; ParamModified = newparam; // Paramètre vraiment nouveau! DisplayNewWin(newparam.GetText(), ref newparam.Comment); continue; case 1: DisplayCompareWin(others.isDefault, Found[0].Comment, ref newparam.Comment, TagParsingEnum.Parameters, false, newparam); /* * // Si aucun commentaire dans le commentaire précédent * if (string.IsNullOrEmpty(newparam.Comment) == true || * string.IsNullOrWhiteSpace(newparam.Comment) == true) * // On merge les commentaires * newparam.Comment = Found[0].Comment; */ continue; default: // ERROR: Impossible to have same name for multiple parameters continue; } } } // Le texte des remarques // Si texte pareil, ne rien faire // Si texte différent, Réaliser une interface pour l'utilisateur pour réaliser le choix // , Si texte d'origine ou vierge est la traduction par défaut // proposé une interface pour saisir commentaire DisplayCompareWin(others.isDefault, others.remarksText, ref this.remarksText, TagParsingEnum.Remark, false); // Le texte exemples DisplayCompareWin(others.isDefault, others.exampleText, ref this.exampleText, TagParsingEnum.Example, false); return(isMerged); }