Exemple #1
0
        public void Execute(GeneratorExecutionContext context)
        {
            var modelFiles = context.AdditionalFiles.Where(f => f.Path.EndsWith(".model.json"));
            var generator  = new Implementation.TemplateBased.T4.T4Generator();

            context.AnalyzerConfigOptions.GlobalOptions
            .TryGetValue("build_property.RootNamespace", out var rootNamespace);
            context.AnalyzerConfigOptions.GlobalOptions
            .TryGetValue("build_property.MSBuildProjectDirectory", out var projectDirectory);

            foreach (var file in modelFiles)
            {
                var options = context.AnalyzerConfigOptions.GetOptions(file);
                options.TryGetValue("build_metadata.AdditionalFiles.CustomToolNamespace", out var namespaceName);

                var entities = JsonModelReader.Read(file.GetText().ToString());
                var model    = new Common.EntitiesModel.Model
                {
                    Entities      = entities,
                    NamespaceName = GetNamespace(namespaceName, file.Path, projectDirectory, rootNamespace)
                };

                var code = generator.Generate(model);

                context.AddSource(Path.GetFileName(file.Path), code);
            }
        }
Exemple #2
0
        protected override string Generate(string modelContent, string namspaceName)
        {
            var model     = JsonModelReader.Read(modelContent);
            var fullModel = new Model
            {
                Entities      = model,
                NamespaceName = namspaceName
            };
            var generator = new T4Generator();

            return(generator.Generate(fullModel));
        }
Exemple #3
0
        protected override byte[] GenerateCode(string inputFileName, string inputFileContent)
        {
            var entities = JsonModelReader.Read(inputFileContent);
            var model    = new Model
            {
                Entities      = entities,
                NamespaceName = FileNamespace
            };

            var generator  = new T4Generator();
            var outContent = generator.Generate(model);

            return(Encoding.UTF8.GetBytes(outContent));
        }
        public void ReadJsonTest()
        {
            var jsonContent =
                "[{" +
                "\"name\": \"AAAA\"," +
                "\"properties\": [" +
                "{ \"name\": \"BBB\", \"dataType\": \"String\" }," +
                "{ \"name\": \"BBB2\", \"dataType\": \"Boolean\" }," +
                "{ \"name\": \"BBB3\", \"dataType\": \"Integer\" }," +
                "{ \"name\": \"BBB4\", \"dataType\": \"Real\" }" +
                "]}," +
                "{" +
                "\"name\": \"AAAA1\"" +
                "}]";

            var model = JsonModelReader.Read(jsonContent);

            var expectedModel = new[]
            {
                new Entity
                {
                    Name       = "AAAA",
                    Properties = new[]
                    {
                        new EntityProperty {
                            Name = "BBB", DataType = DataType.String
                        },
                        new EntityProperty {
                            Name = "BBB2", DataType = DataType.Boolean
                        },
                        new EntityProperty {
                            Name = "BBB3", DataType = DataType.Integer
                        },
                        new EntityProperty {
                            Name = "BBB4", DataType = DataType.Real
                        },
                    },
                },
                new Entity {
                    Name = "AAAA1", Properties = new EntityProperty[0]
                }
            };

            model.Should().BeEquivalentTo(expectedModel);
        }