private void ParseBaseControllers(DocumentationViewModel viewModel) { BaseControllerInfo baseControllerInfo; foreach (ModelType modelType in ModelTypesLocator.GetAllTypes().Where(t => t.FullName.StartsWith("IntelliTect.Coalesce.Controllers"))) { baseControllerInfo = new BaseControllerInfo(); baseControllerInfo.Name = HtmlEncoder.Default.HtmlEncode(GetClassDefinition(modelType)); baseControllerInfo.Properties = RetrieveProperties(modelType.TypeSymbol as INamedTypeSymbol).Select(p => HtmlEncoder.Default.HtmlEncode(p)); baseControllerInfo.Methods = RetrieveMethods(modelType.TypeSymbol as INamedTypeSymbol).Select(m => HtmlEncoder.Default.HtmlEncode(m)); viewModel.BaseControllers.Add(baseControllerInfo); } }
private void ParseInterfaces(DocumentationViewModel viewModel) { InterfaceInfo interfaceInfo; foreach (ModelType modelType in ModelTypesLocator.GetAllTypes().Where(t => t.FullName.StartsWith("IntelliTect.Coalesce") && t.TypeSymbol.TypeKind == TypeKind.Interface)) { // get the interface declaration interfaceInfo = new InterfaceInfo(); interfaceInfo.Name = HtmlEncoder.Default.HtmlEncode(GetClassDefinition(modelType)); interfaceInfo.Properties = RetrieveProperties(modelType.TypeSymbol as INamedTypeSymbol).Select(p => HtmlEncoder.Default.HtmlEncode(p)); interfaceInfo.Methods = RetrieveMethods(modelType.TypeSymbol as INamedTypeSymbol).Select(m => HtmlEncoder.Default.HtmlEncode(m)); viewModel.Interfaces.Add(interfaceInfo); } }
private void ParseAttributes(DocumentationViewModel viewModel) { AttributeInfo attributeInfo; foreach (ModelType modelType in ModelTypesLocator.GetAllTypes().Where(t => t.FullName.StartsWith("IntelliTect.Coalesce") && t.TypeSymbol.BaseType != null && t.TypeSymbol.BaseType.Name == "Attribute")) { attributeInfo = new AttributeInfo(); attributeInfo.Name = modelType.Name.EndsWith("Attribute") ? modelType.Name.Substring(0, (modelType.Name.Length - "Attribute".Length)) : modelType.Name; foreach (var constructor in ((INamedTypeSymbol)modelType.TypeSymbol).Constructors) { attributeInfo.Signature = RetrieveMethodSignature(constructor); attributeInfo.ValidValues = RetrieveValidEnumValues(constructor); break; } attributeInfo.Comment = ExtractXmlComments(modelType.TypeSymbol); viewModel.Attributes.Add(attributeInfo); } }
private void ParseModels(DocumentationViewModel viewModel) { List <string> modelsWeCareAbout = new List <string> { "ListResult", "SaveResult", "ValidationIssue" }; ModelInfo modelInfo; foreach (ModelType modelType in ModelTypesLocator.GetAllTypes().Where(t => t.FullName.StartsWith("IntelliTect.Coalesce.Models"))) { if (modelsWeCareAbout.Contains(modelType.Name)) { modelInfo = new ModelInfo(); modelInfo.Name = HtmlEncoder.Default.HtmlEncode(GetClassDefinition(modelType)); modelInfo.Properties = RetrieveProperties(modelType.TypeSymbol as INamedTypeSymbol).Select(p => HtmlEncoder.Default.HtmlEncode(p)); modelInfo.Methods = RetrieveMethods(modelType.TypeSymbol as INamedTypeSymbol).Select(m => HtmlEncoder.Default.HtmlEncode(m)); viewModel.Models.Add(modelInfo); } } }
internal async Task Generate(CommandLineGeneratorModel model) { DocumentationViewModel viewModel = new DocumentationViewModel(); viewModel.Attributes = new List <AttributeInfo>(); viewModel.Interfaces = new List <InterfaceInfo>(); viewModel.BaseControllers = new List <BaseControllerInfo>(); viewModel.Models = new List <ModelInfo>(); ParseAttributes(viewModel); ParseInterfaces(viewModel); ParseBaseControllers(viewModel); ParseModels(viewModel); var viewOutputPath = Path.Combine( ApplicationEnvironment.ApplicationBasePath, "Views", "Home", "Documentation.cshtml"); await CodeGeneratorActionsService.AddFileFromTemplateAsync(viewOutputPath, "StaticDocumentationBuilder.cshtml", TemplateFolders, viewModel); }