/// <summary>
        ///
        /// </summary>
        /// <param name="templates"></param>
        /// <returns></returns>
        public static IList <TemplateModel> Generate(IList <TemplateItem> templates)
        {
            var models = new List <TemplateModel>();

            foreach (var template in templates)
            {
                var templateModel = CodeGenTaskRunner.CreateModel(template);

                foreach (var section in template.Sections)
                {
                    var sectionModel = new SectionModel
                    {
                        Item   = section,
                        Fields = section.Fields.Select(field => new FieldModel
                        {
                            Item         = field,
                            PropertyName = Helpers.GetPropertyName(field),
                            PropertyType = Helpers.GetGlassFieldType(field)
                        }).ToList()
                    };

                    templateModel.Sections.Add(sectionModel);
                }

                models.Add(templateModel);
            }


            var modelLookup = models.ToDictionary(t => t.Item.Id, t => t);

            foreach (var template in templates.Where(m => m.BaseTemplates.Any()))
            {
                var range = template.BaseTemplates
                            .Where(m => modelLookup.ContainsKey(m.Id)).Select(m => modelLookup[m.Id]);

                modelLookup[template.Id].BaseTemplates.AddRange(range);
            }

            return(models);
        }
Exemple #2
0
        static void Main(string[] args)
        {
            var settings = Program.Setup(args);

            if (settings == null)
            {
                return;
            }

            var templates = UnicornTaskRunner.Run(settings);

            var models = CodeGenTaskRunner.Generate(templates);

            if (!settings.Debug)
            {
                Console.WriteLine(JsonConvert.SerializeObject(models));
                return;
            }

            ListTemplates(templates);
            Console.ReadLine();
        }