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); } }
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)); }
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); }