Exemple #1
0
        public List <CodeTemplate> CompileTemplates(ScaffoldViewModel model)
        {
            Dictionary <string, string> KeyVals = new Dictionary <string, string>();

            KeyVals.Add("<#= ModelTypeName #>", model.ModelName);
            KeyVals.Add("<#= ModelVariable #>", model.ModelName.ToLower());
            KeyVals.Add("<#= Namespace #>", model.Namespace);
            string json = JsonConvert.SerializeObject(KeyVals);

            List <ICompilable> compilers = new List <ICompilable>()
            {
                //new ModelTemplateInterpreter(_config),
                new ModuloInterpreter(),
                new KeyValReplacer(json)
            };

            List <CodeTemplate> templates = new List <CodeTemplate>();

            foreach (CodeTemplate template in DocProvider.GetTemplates(path))
            {
                foreach (ICompilable compiler in compilers)
                {
                    template.Content = compiler.Compile(template.Content);
                }
                templates.Add(template);
            }
            return(templates);
        }
Exemple #2
0
        public List <string> GetSnippets(string Filename)
        {
            List <string> snippets = new List <string>();

            foreach (CodeTemplate template in DocProvider.GetTemplates(path))
            {
                if (template.Name.Contains(Filename))
                {
                    string[] lines = template.Content.Split('~');
                    snippets = new List <string>(lines);
                }
            }
            return(snippets);
        }
Exemple #3
0
        public ModelDescription Generate(Type modelType, ModelDescriptionGenerator generator)
        {
            var provider = new DocProvider();

            var complexModelDescription = new ComplexTypeModelDescription
            {
                Name                   = ModelNameHelper.GetModelName(modelType),
                ModelType              = modelType,
                Documentation          = generator.CreateDefaultDocumentation(modelType),
                ParameterDocumentation = provider.GetDocumentation(modelType)
            };

            generator.GeneratedModels.Add(complexModelDescription.Name, complexModelDescription);
            var hasDataContractAttribute = modelType.GetCustomAttribute <DataContractAttribute>() != null;
            var properties = modelType.GetProperties(BindingFlags.Public | BindingFlags.Instance);

            foreach (var property in properties)
            {
                if (!ModelDescriptionGenerator.ShouldDisplayMember(property, hasDataContractAttribute))
                {
                    continue;
                }
                var propertyModel = new ParameterDescription
                {
                    Name = GetMemberName(property, hasDataContractAttribute)
                };

                if (generator.DocumentationProvider != null)
                {
                    propertyModel.Documentation = generator.DocumentationProvider.GetDocumentation(property);
                }

                GenerateAnnotations(property, propertyModel);
                complexModelDescription.Properties.Add(propertyModel);
                propertyModel.TypeDescription = generator.GetOrCreateModelDescription(property.PropertyType);
            }

            var fields = modelType.GetFields(BindingFlags.Public | BindingFlags.Instance);

            foreach (var field in fields)
            {
                if (!ModelDescriptionGenerator.ShouldDisplayMember(field, hasDataContractAttribute))
                {
                    continue;
                }
                var propertyModel = new ParameterDescription
                {
                    Name = GetMemberName(field, hasDataContractAttribute)
                };

                if (generator.DocumentationProvider != null)
                {
                    propertyModel.Documentation = generator.DocumentationProvider.GetDocumentation(field);
                }

                complexModelDescription.Properties.Add(propertyModel);
                propertyModel.TypeDescription = generator.GetOrCreateModelDescription(field.FieldType);
            }

            return(complexModelDescription);
        }