/// <summary>
        ///		Genera los grupos de espacios de nombres asociados a un programa
        /// </summary>
        internal NameSpaceGroupModelCollection Generate(ProgramModel program)
        {
            NameSpaceGroupModelCollection groups = GroupNameSpaces(program);

            // Añade las estructuras adicionales a los grupos
            AddStructsToGroups(groups, program);
            // Devuelve la colección de grupos
            return(groups);
        }
 /// <summary>
 ///		Procesa los elementos de documentación
 /// </summary>
 private void AddNameSpacesToGroup(NameSpaceGroupModelCollection groups, CompilationUnitModel compilationUnit)
 {
     foreach (NameSpaceModel nameSpace in compilationUnit.SearchNameSpaces())
     {
         if (nameSpace != null)
         {
             groups.Add(nameSpace);
         }
     }
 }
Example #3
0
        /// <summary>
        ///		Convierte un grupo de espacio de nombres en una serie de estructuras de documentación
        /// </summary>
        internal StructDocumentationModelCollection Convert(NameSpaceGroupModelCollection groups)
        {
            StructDocumentationModelCollection structsDoc = new StructDocumentationModelCollection();

            // Convierte los grupos
            foreach (NameSpaceGroupModel group in groups)
            {
                structsDoc.Add(Convert(group));
            }
            // Devuelve la colección de estructuras
            return(structsDoc);
        }
        /// <summary>
        ///		Convierte un grupo de espacio de nombres en una serie de estructuras de documentación
        /// </summary>
        internal StructDocumentationModelCollection Convert(NameSpaceGroupModelCollection objColGroups)
        {
            StructDocumentationModelCollection objColStructs = new StructDocumentationModelCollection();

            // Convierte los grupos
            foreach (NameSpaceGroupModel objGroup in objColGroups)
            {
                objColStructs.Add(Convert(objGroup));
            }
            // Devuelve la colección de estructuras
            return(objColStructs);
        }
Example #5
0
        /// <summary>
        ///		Procesa los elementos de documentación
        /// </summary>
        private void AddNameSpacesToGroup(NameSpaceGroupModelCollection objColGroups, CompilationUnitModel objCompilationUnit)
        {
            List <NameSpaceModel> objColNameSpaces = objCompilationUnit.SearchNameSpaces();

            // Añade los espacios de nombres al documento
            foreach (NameSpaceModel objNameSpace in objColNameSpaces)
            {
                if (objNameSpace != null)
                {
                    objColGroups.Add(objNameSpace);
                }
            }
        }
Example #6
0
        /// <summary>
        ///		Agrupa los espacios de nombres de un programa
        /// </summary>
        private NameSpaceGroupModelCollection GroupNameSpaces(ProgramModel objProgram)
        {
            NameSpaceGroupModelCollection objColGroups = new NameSpaceGroupModelCollection();

            // Genera la documentación
            foreach (CompilationUnitModel objCompilationUnit in objProgram.CompilationUnits)
            {                                     // Añade los espacios de nombres
                AddNameSpacesToGroup(objColGroups, objCompilationUnit);
                // Añade los elementos sin espacio de nombres
                AddStructsNoNameSpace(objColGroups, objCompilationUnit);
            }
            // Devuelve los grupos
            return(objColGroups);
        }
        /// <summary>
        ///		Añade las estructuras que no tienen un espacio de nombres
        /// </summary>
        private void AddStructsNoNameSpace(NameSpaceGroupModelCollection groups, CompilationUnitModel compilationUnit)
        {
            LanguageStructModelCollection structsDoc = compilationUnit.SearchNoNameSpaces();

            if (structsDoc != null && structsDoc.Count > 0)
            {
                NameSpaceGroupModel group = GetGroupNoNameSpace(groups);

                // Añade las estructuras
                foreach (LanguageStructModel structDoc in structsDoc)
                {
                    group.NameSpace.Items.Add(structDoc);
                }
            }
        }
Example #8
0
        /// <summary>
        ///		Añade las estructuras que no tienen un espacio de nombres
        /// </summary>
        private void AddStructsNoNameSpace(NameSpaceGroupModelCollection objColGroups, CompilationUnitModel objCompilationUnit)
        {
            LanguageStructModelCollection objColStructs = objCompilationUnit.SearchNoNameSpaces();

            if (objColStructs != null && objColStructs.Count > 0)
            {
                NameSpaceGroupModel objGroup = GetGroupNoNameSpace(objColGroups);

                // Añade las estructuras
                foreach (LanguageStructModel objStruct in objColStructs)
                {
                    objGroup.NameSpace.Items.Add(objStruct);
                }
            }
        }
Example #9
0
        /// <summary>
        ///		Obtiene el grupo de espacios de nombres para las clases sin espacio de nombres
        /// </summary>
        private NameSpaceGroupModel GetGroupNoNameSpace(NameSpaceGroupModelCollection objColGroups)
        {
            NameSpaceGroupModel objGroup = objColGroups.Search(cnstStrNoNameSpace);

            // Si no se ha encontrado el espacio de nombres se añade
            if (objGroup == null)
            {                                     // Crea el espacio de nombres
                objGroup = new NameSpaceGroupModel(null, cnstStrNoNameSpace);
                // Añade el espacio de nombres a la colección
                objColGroups.Add(objGroup);
                // Crea el símbolo del espacio de nombres
                objGroup.NameSpace      = new NameSpaceModel(null);
                objGroup.NameSpace.Name = cnstStrNoNameSpace;
            }
            // Devuelve el grupo
            return(objGroup);
        }
        /// <summary>
        ///		Obtiene el grupo de espacios de nombres para las clases sin espacio de nombres
        /// </summary>
        private NameSpaceGroupModel GetGroupNoNameSpace(NameSpaceGroupModelCollection groups)
        {
            NameSpaceGroupModel group = groups.Search(NoNameSpace);

            // Si no se ha encontrado el espacio de nombres se añade
            if (group == null)
            {
                // Crea el espacio de nombres
                group = new NameSpaceGroupModel(null, NoNameSpace);
                // Añade el espacio de nombres a la colección
                groups.Add(group);
                // Crea el símbolo del espacio de nombres
                group.NameSpace      = new NameSpaceModel(null);
                group.NameSpace.Name = NoNameSpace;
            }
            // Devuelve el grupo
            return(group);
        }
        /// <summary>
        ///		Añade las estructuras a los grupos
        /// </summary>
        private void AddStructsToGroups(NameSpaceGroupModelCollection groups, ProgramModel program)
        {
            foreach (CompilationUnitModel compilationUnit in program.CompilationUnits)
            {
                foreach (LanguageStructModel structDoc in compilationUnit.Root.Items)
                {
                    if (structDoc is NameSpaceModel)
                    {
                        NameSpaceModel      nameSpace = structDoc as NameSpaceModel;
                        NameSpaceGroupModel group     = groups.Search(nameSpace.Name);

                        if (group != null)
                        {
                            foreach (LanguageStructModel child in nameSpace.Items)
                            {
                                // Si no se ha añadido antes este espacio de nombres, se crea
                                if (group.NameSpace == null)
                                {
                                    group.NameSpace = nameSpace;
                                }
                                // Añade el elemento hijo
                                AddStructToNameSpace(group.NameSpace, child);
                            }
                        }
                    }
                    else
                    {
                        NameSpaceGroupModel group = GetGroupNoNameSpace(groups);

                        if (group != null)
                        {
                            AddStructToNameSpace(group.NameSpace, structDoc);
                        }
                    }
                }
            }
        }
Example #12
0
        /// <summary>
        ///		Añade las estructuras a los grupos
        /// </summary>
        private void AddStructsToGroups(NameSpaceGroupModelCollection objColGroups, ProgramModel objProgram)
        {
            foreach (CompilationUnitModel objCompilationUnit in objProgram.CompilationUnits)
            {
                foreach (LanguageStructModel objStruct in objCompilationUnit.Root.Items)
                {
                    if (objStruct is NameSpaceModel)
                    {
                        NameSpaceModel      objNameSpace = objStruct as NameSpaceModel;
                        NameSpaceGroupModel objGroup     = objColGroups.Search(objNameSpace.Name);

                        if (objGroup != null)
                        {
                            foreach (LanguageStructModel objChild in objNameSpace.Items)
                            {                                                     // Si no se ha añadido antes este espacio de nombres, se crea
                                if (objGroup.NameSpace == null)
                                {
                                    objGroup.NameSpace = objNameSpace;
                                }
                                // Añade el elemento hijo
                                AddStructToNameSpace(objGroup.NameSpace, objChild);
                            }
                        }
                    }
                    else
                    {
                        NameSpaceGroupModel objGroup = GetGroupNoNameSpace(objColGroups);

                        if (objGroup != null)
                        {
                            AddStructToNameSpace(objGroup.NameSpace, objStruct);
                        }
                    }
                }
            }
        }