private void AddLine(StringBuilder b, string formatString, params string[] data)
{
const int firstTab = 24;
const int secondTab = 50;
// Coding
// @ - first tab
// # - second tab
// We always add indent spaces
// ReSharper disable once RedundantAssignment
String s = formatString = Spaces() + formatString;
// Is anything too big to fit?
if (data[1].Length > secondTab - firstTab)
{
string dd = data[1];
if (dd.Contains('|'))
{
// Split enum OR onto multiple lines
dd = dd.Replace("|", "|\n" + new String(' ', firstTab + 1));
}
if (dd.Contains(".."))
{
// Split hex array
dd = dd.Replace("..", "..\n" + new String(' ', firstTab + 2));
}
data[1] = dd;
}
// Fill it in
// ReSharper disable once CoVariantArrayConversion
s = String.Format(s, data);
// Set the tabs
string outS = "";
int column = 0;
foreach (char c in s)
{
if (c == '\n')
{
column = -1;
}
if (c == '@')
{
int numSpaces = firstTab - column;
if (numSpaces <= 0)
{
numSpaces = 1;
}
outS += new String(' ', numSpaces);
column += numSpaces;
continue;
}
if (c == '#')
{
int numSpaces = secondTab - column;
if (numSpaces <= 0)
{
numSpaces = 1;
}
outS += new String(' ', numSpaces);
column += numSpaces;
continue;
}
outS += c;
column++;
}
outS += "\n";
b.Append(outS);
}