private static void WriteStatistics(Statistics stats)
{
int firstColumnWidth = Math.Max(stats.NumberOfObjectByType.Select(x => x.Key.Name.Length).Max(), 30);
int secondColumnWidth = Math.Max(stats.FileName.Length, 10);
var sectionDelimiter = string.Format("+{0}+{1}+", new string('-', firstColumnWidth), new string('-', secondColumnWidth));
var rowFormat = string.Format("|{{0,-{0}}}|{{1,{1}}}|", firstColumnWidth, secondColumnWidth);
WriteLine(sectionDelimiter);
WriteLine(rowFormat, "File Name:", stats.FileName);
WriteLine(rowFormat, "File Length:", stats.FileLength);
WriteLine(rowFormat, "Number of Objects:", stats.NumberOfObjects);
WriteLine(rowFormat, "Average Object Length:", stats.FileLength / stats.NumberOfObjects);
WriteLine(rowFormat, "Number of Object Types:", stats.NumberOfObjectByType.Count);
WriteLine(sectionDelimiter);
WriteLine(rowFormat, "Object Type", "Count");
WriteLine(sectionDelimiter);
foreach(var pair in stats.NumberOfObjectByType.OrderByDescending(x => x.Value))
{
WriteLine(rowFormat, pair.Key.Name, pair.Value);
}
WriteLine(sectionDelimiter);
}