public string GenerateCode() { ClassTemplate t = new ClassTemplate(); t.Class = this; return(t.TransformText()); }
static void GenerateClass() { ClassTemplate ct = new ClassTemplate(); var tt = ct.TransformText(); using (StreamWriter file = new StreamWriter(@"MyClass.cs")) { file.Write(tt); } }
void GenerateCode() { Directory.CreateDirectory(OutputDir); // Generate Libs file using (TextWriter w = File.CreateText(Path.Combine(OutputDir, "Libs.cs"))) { LibsTemplate.Generator = this; LibsTemplate.Libs = new[] { Lib }; w.Write(LibsTemplate.TransformText()); } // Generate user types foreach (Namespace ns in Lib.Namespaces) { if (ns.ParentNamespace is Class) { continue; } var klass = ns as Class; if (klass != null) { if (klass.Disable) { continue; } using (TextWriter w = File.CreateText(Path.Combine(OutputDir, klass.Name + ".cs"))) { ClassTemplate.Generator = this; ClassTemplate.Class = klass; ClassTemplate.Nested = false; w.Write(ClassTemplate.TransformText()); } continue; } var @enum = ns as Enumeration; if (@enum != null) { using (TextWriter w = File.CreateText(Path.Combine(OutputDir, @enum.Name + ".cs"))) { EnumTemplate.Generator = this; EnumTemplate.Enum = @enum; EnumTemplate.Nested = false; w.Write(EnumTemplate.TransformText()); } continue; } } }
public static string GenerateClassCode(ClassData classData) { ClassTemplate t = new ClassTemplate(); t.Session = new Microsoft.VisualStudio.TextTemplating.TextTemplatingSession(); t.Session["classParameters"] = classData; t.Session["methods"] = classData.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); } }