/// <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); }
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); }
/// <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); }
/// <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()); } }
/// <summary> /// Añade un elemento a la colección /// </summary> public LanguageStructModel Add(LanguageStructModel.StructType intIDType, LanguageStructModel objParent) { return(AddItem(new LanguageStructModel(intIDType, objParent))); }
/// <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); }
/// <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); } } } }
/// <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); }
/// <summary> /// Busca una plantilla en la colección /// </summary> internal TemplateModel Search(LanguageStructModel.StructType intIDStructType) { return(this.FirstOrDefault(objTemplate => objTemplate.IDStructType == intIDStructType)); }
/// <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)); }