示例#1
0
        private void ReturnDefaultText()
        {
            if (returnText.Count == 0)
            {
                TagModified   = TagParsingEnum.Return;
                ParamModified = null;

                returnText.Add(GetDefaultReturn());
                DisplayNewWin(this.returnText, ref this.returnText);
                this.hasReturn = true;
            }
        }
示例#2
0
        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!
            }
        }
示例#3
0
        // 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());
            }
        }
示例#4
0
        // 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);
        }
示例#5
0
        // 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);
        }