Esempio n. 1
0
        public void GenerateDataModelAST(TypeScriptClassModel classModel, string outputPath)
        {
            var request = new ClassGenerationRequest();

            string fileName = $"{NameCaseConverter.ToKebabCase(classModel.Name)}.model.{TypeScriptFileExtension.File}";

            var typeGenerator = new TypeGenerator();

            request.OutputPath = Path.Combine(outputPath, "models", fileName);

            request.DataModel = new ClassModel()
            {
                Name           = classModel.Name,
                BaseClass      = classModel.BaseClass,
                Decorators     = new string[] { },
                TypeParameters = classModel.TypeParameters.Select(i => i.Name).ToArray(),
                Imports        = classModel.Imports.Select(i => new ImportModel()
                {
                    Names = new string[] { i.Name },
                    Path  = i.DependencyKind == DependencyKind.Model
                        ? $"./{NameCaseConverter.ToKebabCase(i.Name)}.model"
                        : $"../enums/{NameCaseConverter.ToKebabCase(i.Name)}.enum"
                }).ToArray(),
                Properties = classModel.Properties.Select(p => new PropertyModel()
                {
                    Name         = NameCaseConverter.ToCamelCase(p.Name),
                    Type         = typeGenerator.GetEmittedType(p.Type),
                    IsPrivate    = false,
                    InitialValue = null,
                }).ToArray(),
            };

            var result = CallGenerator("/generate/class", CreateStringContent(request));
        }
Esempio n. 2
0
        public void GenerateValidatorAST(AngularFormValidatorModel validatorModel, string outputPath)
        {
            var request = new ClassGenerationRequest();

            string fileName = $"{NameCaseConverter.ToKebabCase(validatorModel.Name)}.validator.{TypeScriptFileExtension.File}";

            var typeGenerator = new TypeGenerator();

            request.OutputPath = Path.Combine(outputPath, "validators", fileName);

            var imports = new List <ImportModel>()
            {
                new ImportModel()
                {
                    Names = new string[] { "FormGroup, FormBuilder, Validators" }, Path = "@angular/forms"
                }
            };

            var specificImports = validatorModel.Imports.Select(i => new ImportModel()
            {
                Names = new string[] { i.Name },
                Path  = i.DependencyKind == DependencyKind.Model
                    ? $"../models/{NameCaseConverter.ToKebabCase(i.Name)}.model"
                    : $"../enums/{NameCaseConverter.ToKebabCase(i.Name)}.enum"
            }).ToList();

            imports.AddRange(specificImports);

            request.DataModel = new ClassModel()
            {
                Name           = validatorModel.Name + "Validator",
                BaseClass      = null,
                Decorators     = new string[] { },
                TypeParameters = new string[] { },
                Imports        = imports.ToArray(),
                Properties     = new PropertyModel[]
                {
                    new PropertyModel()
                    {
                        Name = "validationMessages", Type = null, IsPrivate = false, InitialValue = ""
                    }
                },
                ConstructorDef = new ConstructorModel()
                {
                    Parameters = new ParameterModel[]
                    {
                        new ParameterModel()
                        {
                            Name = "fb", Type = "FormBuilder", IsPrivate = false
                        }
                    }
                },
                Methods = new MethodModel[]
                {
                    new ValidatorBuilderMethodModel()
                    {
                    }
                }
            };

            var result = CallGenerator("/generate/class", CreateStringContent(request));
        }
Esempio n. 3
0
        public void GenerateServiceAST(TypeScriptServiceModel serviceModel, string outputPath)
        {
            var request = new ClassGenerationRequest();

            string fileName = $"{NameCaseConverter.ToKebabCase(serviceModel.Name)}.service.{TypeScriptFileExtension.File}";

            var typeGenerator = new TypeGenerator();

            request.OutputPath = Path.Combine(outputPath, "services", fileName);

            var imports = new List <ImportModel>()
            {
                new ImportModel()
                {
                    Names = new string[] { "Injectable" }, Path = "@angular/core"
                },
                new ImportModel()
                {
                    Names = new string[] { "Http", "Headers", "Response" }, Path = "@angular/http"
                },
                new ImportModel()
                {
                    Names = new string[] { }, Path = "rxjs/add/operator/toPromise"
                }
            };

            var specificImports = serviceModel.Imports.Select(i => new ImportModel()
            {
                Names = new string[] { i.Name },
                Path  = i.DependencyKind == DependencyKind.Model
                    ? $"../models/{NameCaseConverter.ToKebabCase(i.Name)}.model"
                    : $"../enums/{NameCaseConverter.ToKebabCase(i.Name)}.enum"
            }).ToList();

            imports.AddRange(specificImports);

            request.DataModel = new ClassModel()
            {
                Name           = serviceModel.Name + "Service",
                BaseClass      = null,
                Decorators     = new string[] { "Injectable()" },
                TypeParameters = new string[] { },
                Imports        = imports.ToArray(),
                Properties     = new PropertyModel[]
                {
                    new PropertyModel()
                    {
                        Name = "baseUrl", Type = null, IsPrivate = true, InitialValue = serviceModel.RoutePrefix
                    }
                },
                ConstructorDef = new ConstructorModel()
                {
                    Parameters = new ParameterModel[]
                    {
                        new ParameterModel()
                        {
                            Name = "http", Type = "Http", IsPrivate = true
                        }
                    }
                },
                Methods = serviceModel.Methods.Select(m => new HttpMethodModel()
                {
                    Name       = NameCaseConverter.ToCamelCase(m.Name),
                    ReturnType = typeGenerator.GetEmittedType(m.ReturnType),
                    HttpMethod = m.HttpMethod,
                    Route      = m.Route,
                    Parameters = m.Parameters.Select(p => new ParameterModel()
                    {
                        Name      = p.Item2,
                        Type      = typeGenerator.GetEmittedType(p.Item1),
                        IsPrivate = false
                    }).ToArray()
                }).ToArray()
            };

            var result = CallGenerator("/generate/class", CreateStringContent(request));
        }