예제 #1
0
        /// <summary>
        ///		Carga el archivo de definición de plantillas
        /// </summary>
        internal TemplateModelCollection Load(string strFileName)
        {
            TemplateModelCollection objColTemplates = new TemplateModelCollection(System.IO.Path.GetDirectoryName(strFileName));

            // Carga las plantillas
            if (System.IO.File.Exists(strFileName))
            {
                MLFile objMLFile = new LibMarkupLanguage.Services.XML.XMLParser().Load(strFileName);

                foreach (MLNode objMLRoot in objMLFile.Nodes)
                {
                    if (objMLRoot.Name == "Templates")
                    {
                        foreach (MLNode objMLTemplate in objMLRoot.Nodes)
                        {
                            if (objMLTemplate.Name == "Page")
                            {
                                LanguageStructModel.StructType intIDType = GetLanguageStruct(objMLTemplate.Attributes["StructType"].Value);
                                string strRelativeFileName = objMLTemplate.Attributes["File"].Value;
                                string strRootTemplate     = objMLTemplate.Attributes["RootTemplate"].Value;

                                if (intIDType != LanguageStructModel.StructType.Unknown && !strRelativeFileName.IsEmpty())
                                {
                                    objColTemplates.Add(intIDType, strRelativeFileName, strRootTemplate);
                                }
                            }
                        }
                    }
                }
            }
            // Devuelve la colección de plantillas
            return(objColTemplates);
        }
        /// <summary>
        ///		Trata un bucle
        /// </summary>
        private void TreatLoop(MLNode objMLSource, MLNode objMLParentTarget, LanguageStructModel objStruct, string strStructType)
        {
            if (strStructType.EqualsIgnoreCase(cnstStrTagAttributeParameter))
            {
                if (objStruct is BaseMethodModel)
                {
                    BaseMethodModel objMethod = objStruct as BaseMethodModel;

                    if (objMethod.Arguments != null && objMethod.Arguments.Count > 0)
                    {
                        foreach (ArgumentModel objArgument in objMethod.Arguments)
                        {
                            TreatChilds(objMLSource.Nodes, objMLParentTarget, objStruct, objArgument);
                        }
                    }
                }
            }
            else
            {
                LanguageStructModel.StructType intIDType     = GetLanguageStruct(strStructType);
                LanguageStructModelCollection  objColStructs = SelectItemsForGeneration(objStruct, intIDType);

                // Crea los nodos hijo
                foreach (LanguageStructModel objChild in objColStructs)
                {                                                 // Si hay que añadirla a la colección de estructuras por referencia, se añade
                    if (objMLSource.Attributes[cnstStrTagAttributeAddToReferences].Value.GetBool())
                    {
                        Document.StructsReferenced.Add(objChild);
                    }
                    // Ytata los nodos hijo
                    TreatChilds(objMLSource.Nodes, objMLParentTarget, objChild);
                }
            }
        }
        /// <summary>
        ///		Comprueba si existe un tipo de estructura hija
        /// </summary>
        private bool CheckIfExistsChild(LanguageStructModel objStruct, string strStructType)
        {
            bool blnExists = false;

            // Comprueba si existe
            if (strStructType.EqualsIgnoreCase(cnstStrTagAttributeParameter))
            {
                if (objStruct is BaseMethodModel)
                {
                    BaseMethodModel objMethod = objStruct as BaseMethodModel;

                    if (objMethod.Arguments != null && objMethod.Arguments.Count > 0)
                    {
                        blnExists = true;
                    }
                }
            }
            else
            {
                LanguageStructModel.StructType intIDType     = GetLanguageStruct(strStructType);
                LanguageStructModelCollection  objColStructs = SelectItemsForGeneration(objStruct, intIDType);

                if (objColStructs != null && objColStructs.Count > 0)
                {
                    blnExists = true;
                }
            }
            // Devuelve el valor que indica si existe
            return(blnExists);
        }
예제 #4
0
 internal TemplateModel(LanguageStructModel.StructType intIDStructType, string strPath,
                        string strRelativeFileName, string strRootTemplate)
 {
     IDStructType     = intIDStructType;
     Path             = strPath;
     RelativeFileName = strRelativeFileName;
     RootTemplate     = strRootTemplate;
 }
 /// <summary>
 ///		Comprueba si existen elementos de un tipo determinado
 /// </summary>
 internal bool ExistsItems(LanguageStructModel.StructType intIDType)
 {         // Recorre los elementos
     foreach (DocumentFileModel objDocument in this)
     {
         if (objDocument.StructType == intIDType)
         {
             return(true);
         }
     }
     // Si ha llegado hasta aquí es porque no existen elementos
     return(false);
 }
예제 #6
0
        /// <summary>
        ///		Obtiene el tipo de estructura
        /// </summary>
        private LanguageStructModel.StructType GetLanguageStruct(string strStruct)
        {
            LanguageStructModel.StructType intIDType = LanguageStructModel.StructType.Unknown;
            string [] arrStrToken  = Enum.GetNames(typeof(LanguageStructModel.StructType));
            Array     arrIntValues = Enum.GetValues(typeof(LanguageStructModel.StructType));

            // Obtiene el tipo del enumerado
            if (!strStruct.IsEmpty())
            {
                for (int intIndex = 0; intIndex < arrStrToken.Length; intIndex++)
                {
                    if (arrStrToken[intIndex].EqualsIgnoreCase(strStruct))
                    {
                        intIDType = (LanguageStructModel.StructType)arrIntValues.GetValue(intIndex);
                    }
                }
            }
            // Devuelve el tipo
            return(intIDType);
        }
예제 #7
0
        /// <summary>
        ///		Obtiene el nombre de un tipo de estructura
        /// </summary>
        private string GetTypeName(LanguageStructModel.StructType intIDType)
        {
            switch (intIDType)
            {
            case LanguageStructModel.StructType.CompilationUnit:
                return("Unidad de compilación");

            case LanguageStructModel.StructType.NameSpace:
                return("Espacio de nombres");

            case LanguageStructModel.StructType.Class:
                return("Clase");

            case LanguageStructModel.StructType.Interface:
                return("Interface");

            case LanguageStructModel.StructType.Constructor:
                return("Constructor");

            case LanguageStructModel.StructType.Method:
                return("Método");

            case LanguageStructModel.StructType.Enum:
                return("Enumerado");

            case LanguageStructModel.StructType.EnumMember:
                return("Miembro de enumerado");

            case LanguageStructModel.StructType.Property:
                return("Propiedad");

            case LanguageStructModel.StructType.Struct:
                return("Estructura");

            default:
                return(intIDType.ToString());
            }
        }
예제 #8
0
 /// <summary>
 ///		Añade un elemento a la colección
 /// </summary>
 public LanguageStructModel Add(LanguageStructModel.StructType intIDType, LanguageStructModel objParent)
 {
     return(AddItem(new LanguageStructModel(intIDType, objParent)));
 }
예제 #9
0
        /// <summary>
        ///		Obtiene los elementos de determinada estructura que se deben documentar
        /// </summary>
        protected LanguageStructModelCollection SelectItemsForGeneration(DocumentFileModel objDocument, LanguageStructModel.StructType intIDType)
        {
            LanguageStructModelCollection objColStructs = new LanguageStructModelCollection();

            // Obtiene las estructuras
            foreach (LanguageStructModel objStruct in objDocument.LanguageStruct.Items)
            {
                if (objStruct.IDType == intIDType && MustGenerateDocumentation(objStruct))
                {
                    objColStructs.Add(objStruct);
                }
            }
            // Devuelve la colección
            return(objColStructs);
        }
예제 #10
0
        /// <summary>
        ///		Obtiene una tabla de estructuras de determinado tipo
        /// </summary>
        internal void GetTableStructs(MLNode objMLRoot, DocumentFileModel objDocument, string strTitle, LanguageStructModel.StructType intIDType)
        {
            if (objDocument.Childs.ExistsItems(intIDType))
            {
                MLNode objMLTable;

                // Título
                objMLRoot.Nodes.Add("br");
                objMLRoot.Nodes.Add("h3", strTitle);
                // Tabla
                objMLTable = objMLBuilder.AddTable(objMLRoot, "Ambito", "Nombre", "Descripción");
                // Añade las filas
                foreach (DocumentFileModel objChild in objDocument.Childs)
                {
                    if (objChild.StructType == intIDType)
                    {
                        MLNode objMLRow = objMLTable.Nodes.Add("tr");

                        objMLRow.Nodes.Add("td", GetModifierText(objChild.LanguageStruct.Modifier));
                        objMLRow.Nodes.Add("td").Nodes.Add(GetLink(objChild));
                        objMLRow.Nodes.Add("td", objChild.LanguageStruct.RemarksXml.Summary);
                    }
                }
            }
        }
예제 #11
0
 /// <summary>
 ///		Añade un elemento a la colección
 /// </summary>
 public LanguageStructModel Add(LanguageStructModel.StructType typeId, LanguageStructModel parent)
 {
     return(AddItem(new LanguageStructModel(typeId, parent)));
 }
        /// <summary>
        ///		Obtiene los elementos de determinada estructura que se deben documentar
        /// </summary>
        private LanguageStructModelCollection SelectItemsForGeneration(LanguageStructModel objStruct, LanguageStructModel.StructType intIDType)
        {
            LanguageStructModelCollection objColStructs = new LanguageStructModelCollection();

            // Obtiene las estructuras
            foreach (LanguageStructModel objChild in objStruct.Items)
            {
                if (objChild.IDType == intIDType && Generator.Templates.MustGenerateDocumentation(objChild, Generator.DocumentationProcessor.Parameters))
                {
                    objColStructs.Add(objChild);
                }
            }
            // Ordena las estructuras por nombre
            objColStructs.SortByName();
            // Devuelve la colección
            return(objColStructs);
        }
예제 #13
0
 /// <summary>
 ///		Busca una plantilla en la colección
 /// </summary>
 internal TemplateModel Search(LanguageStructModel.StructType intIDStructType)
 {
     return(this.FirstOrDefault(objTemplate => objTemplate.IDStructType == intIDStructType));
 }
예제 #14
0
 /// <summary>
 ///		Añade una plantilla a la colección
 /// </summary>
 internal void Add(LanguageStructModel.StructType intIDStructType, string strRelativeFileName, string strRootTemplate)
 {
     Add(new TemplateModel(intIDStructType, Path, strRelativeFileName, strRootTemplate));
 }