public string Translate()
{
FormatWriter writer = new FormatWriter()
{
Formatter = this.Formatter
};
// Opening declaration
string enumVisibility = this.RenderedVisibilityModifier;
if (this.injectedBefore == null)
{
writer.WriteLine("{0}{1} {2} {3}",
text => ClassDeclarationCodePerfect.RefineDeclaration(text),
enumVisibility,
Lexems.EnumKeyword,
this.Name.Translate(),
Lexems.OpenCurlyBracket);
}
else
{
writer.WriteLine("{0} {1}{2} {3} {4}",
text => ClassDeclarationCodePerfect.RefineDeclaration(text),
this.injectedBefore.Translate(),
enumVisibility,
Lexems.EnumKeyword,
this.Name.Translate(),
Lexems.OpenCurlyBracket);
}
if (this.ShouldRenderMembers)
{
var lastMember = this.members.Count() > 0 ? this.members.Last() : null;
foreach (ITranslationUnit translationUnit in this.members)
{
if ((object)translationUnit == (object)lastMember)
{
writer.WriteLine("{0}", translationUnit.Translate());
}
else
{
writer.WriteLine("{0}{1}", translationUnit.Translate(), Lexems.Comma);
}
}
}
// Closing
writer.WriteLine("{0}",
text => ClassDeclarationCodePerfect.RefineDeclaration(text),
Lexems.CloseCurlyBracket);
return writer.ToString();
}