/// <summary> /// Ensures that the writer state matches the required level. /// </summary> /// <param name="requiredLevel">The level required.</param> void EnsureLevel(WriterLevel requiredLevel) { if (requiredLevel != _Level) { throw new InvalidOperationException($"Writer level is '{_Level}' and does not match required level {requiredLevel}"); } }
/// <summary> /// Closes the current open bracket. /// </summary> public void CloseBracket() { if (_Level == WriterLevel.Type) { CurrentTypeName = null; } _Level = _Level - 1; _Writer.WriteLine(GetIntent() + "}"); }
/// <summary> /// Sets the namespace of the current file. /// </summary> /// <param name="namespace">The namespace to set.</param> public void BeginNamespace(String @namespace) { EnsureLevel(WriterLevel.Using); // Writes the namespace _Writer.WriteLine(); _Writer.WriteLine($"namespace {@namespace}"); _Writer.WriteLine("{"); // Set the namespace of the file _Namespace = @namespace; // Set writer level _Level = WriterLevel.Namespace; }
/// <summary> /// Begins a new class definition. /// </summary> /// <param name="className">The name of the class.</param> /// <param name="baseClassName">The name of the base class.</param> /// <param name="isAbstract">Determines if the type is abstract.</param> public void BeginClass(String className, String baseClassName = null, Boolean isAbstract = false) { EnsureLevel(WriterLevel.Namespace); if (baseClassName != null) { baseClassName = $" : {baseClassName}"; } CurrentTypeName = className; _Writer.WriteLine($"\tpublic{(isAbstract ? " abstract" : String.Empty)} class {className}{baseClassName}"); _Writer.WriteLine("\t{"); _Level = WriterLevel.Type; }