public virtual string GenerateCode() { InterfaceTemplate t = new InterfaceTemplate(); t.Interface = this; return(t.TransformText()); }
public static string GenerateInterfaceCode(InterfaceData interfaceData) { InterfaceTemplate t = new InterfaceTemplate(); t.Session = new Microsoft.VisualStudio.TextTemplating.TextTemplatingSession(); t.Session["interfaceParameters"] = interfaceData; t.Session["methods"] = interfaceData.Methods; // Add other parameter values to t.Session here. t.Initialize(); // Must call this to transfer values. string resultText = t.TransformText(); return(resultText); }
static void Generate(string apiPath) { try { // Enumerate through all *.json files in the provided path and generate classes if (Directory.Exists(apiPath)) { Log("Scanning {0}...", apiPath); var jsonFiles = Directory.EnumerateFiles(apiPath, "*.json").ToList(); Log("Found {0} objects.", jsonFiles.Count); if (jsonFiles.Count > 0) { // Parse JSON into metadata classes var generatedPath = Path.Combine(apiPath, "generated"); if (!Directory.Exists(generatedPath)) { Directory.CreateDirectory(generatedPath); } Log("Parsing JSON files..."); var metaClasses = new List <MetaClass>(); foreach (var jsonFile in jsonFiles) { Log("Parsing {0}...", Path.GetFileName(jsonFile)); var node = JsonConvert.DeserializeObject <Node>(File.ReadAllText(jsonFile)); if (node.Attributes != null) { var metaClass = new MetaClass(node); if (!String.IsNullOrWhiteSpace(metaClass.Name)) { metaClasses.Add(metaClass); } } } // Generate classes from the metadata Log("Generating classes..."); foreach (var metaClass in metaClasses) { Log("Generating {0}...", metaClass.FullName); // Add properties from mixins to the classes metaClass.AddMixins(metaClasses); // Add class interfaces metaClass.AddInterfaces(metaClasses); // Generate class/interface from T4 template string content = null; if (!metaClass.IsInterface) { var template = new ClassTemplate { Session = new Dictionary <string, object> { { "Model", metaClass } } }; content = template.TransformText(); } else if (metaClass.IsInterface) { var template = new InterfaceTemplate { Session = new Dictionary <string, object> { { "Model", metaClass } } }; content = template.TransformText(); } // Write output class to .cs file if (content != null) { var relOutputFile = metaClass.OriginalFullName.Replace(".", @"\") + ".cs"; if (!relOutputFile.StartsWith(@"qx\")) { relOutputFile = @"qx\" + relOutputFile; } var outputFile = Path.Combine(generatedPath, relOutputFile); var outputPath = Path.GetDirectoryName(outputFile); if (!Directory.Exists(outputPath)) { Directory.CreateDirectory(outputPath); } File.WriteAllText(outputFile, content); } } } Log("Generation completed."); } else { Log("Path not found: " + apiPath); } } catch (Exception e) { Log(e); } }