public void EnumWriter() { EnumTemplate template = new EnumTemplate((NamespaceTemplate)null, "test"); template.Values.Add(new EnumValueTemplate("value", Code.Number(0))); EnumWriter writer = new EnumWriter(); writer.Write(template, this.output); Assert.AreEqual("public enum test\r\n{\r\n value = 0\r\n}", this.output.ToString()); }
public string Generate() { var b = new CodeWriter(); // 自動生成されたと宣言する b.WriteLine("// <auto-generated/>"); // Nullableを有効化する b.WriteLine("#nullable enable"); b.WriteLine(); // namespaceの宣言を行う。 { b.WriteLine($"namespace {_rootDefinition.CSharpNamespace}"); b.WriteLine("{"); using (b.Indent()) { var accessLevel = this.GetAccessLevel(); var enumWriter = new EnumWriter(); foreach (var enumDefinition in _rootDefinition.Enums) { enumWriter.Write(b, enumDefinition, accessLevel); } var objectWriter = new ObjectWriter(_rootDefinition, _externalDefinitions); foreach (var objectDefinition in _rootDefinition.Objects) { objectWriter.Write(b, objectDefinition, accessLevel); } var serviceWriter = new ServiceWriter(_rootDefinition, _externalDefinitions); foreach (var serviceDefinition in _rootDefinition.Services) { serviceWriter.Write(b, serviceDefinition, accessLevel); } } b.WriteLine("}"); } return(b.ToString()); }
public static string Generate(RocketPackDefinition definition, IEnumerable <RocketPackDefinition> externalDefinitions) { var w = new CodeWriter(); // usingの宣言を行う。 { var hashSet = new HashSet <string>(); // ロードされた*.rpfファイルの名前空間をusingする hashSet.UnionWith(externalDefinitions.SelectMany(n => n.Options.Where(m => m.Name == "csharp_namespace").Select(m => m.Value.Trim()))); var sortedList = hashSet.ToList(); sortedList.Sort(); foreach (var name in sortedList) { w.WriteLine($"using {name};"); } } w.WriteLine(); w.WriteLine("#nullable enable"); w.WriteLine(); // namespaceの宣言を行う。 { var option = definition.Options.First(n => n.Name == "csharp_namespace"); w.WriteLine($"namespace {option.Value}"); } w.WriteLine("{"); w.PushIndent(); var enumWriter = new EnumWriter(definition); var classWriter = new ClassWriter(definition, externalDefinitions); var structWriter = new StructWriter(definition, externalDefinitions); foreach (var enumInfo in definition.Enums) { // Enum enumWriter.Write(w, enumInfo); w.WriteLine(); } foreach (var messageInfo in definition.Messages) { if (messageInfo.FormatType == MessageFormatType.Medium) { // Class classWriter.Write(w, messageInfo); } else if (messageInfo.FormatType == MessageFormatType.Small) { // Struct structWriter.Write(w, messageInfo); } w.WriteLine(); } w.PopIndent(); w.WriteLine("}"); return(w.ToString()); }