コード例 #1
0
        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);
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
            }
        }
コード例 #4
0
        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);
                }
            }
        }
コード例 #5
0
        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);
        }