public string ToMarkDown() { if (Items.Count == 0) { return(""); } var stringBuilder = new StringBuilder(); var s = "|"; var filteredPropertyNames = FilterProperties(); foreach (var property in filteredPropertyNames) { var headerName = property.Name; if (ColumnNameOverrides.ContainsKey(property.Name)) { headerName = ColumnNameOverrides[property.Name]; } var length = MaxWidth[property.Name] - headerName.Length; s += $" {headerName.ToValidOutput()}{new string(' ', length)} |"; } stringBuilder.AppendLine(s); s = "|"; foreach (var property in filteredPropertyNames) { var columnSeparator = $" {new string('-', MaxWidth[property.Name])} |"; if (ColumnTextJustification.ContainsKey(property.Name)) { switch (ColumnTextJustification[property.Name]) { case TextJustification.Centered: columnSeparator = columnSeparator.Replace("- ", ": "); columnSeparator = columnSeparator.Replace(" -", " :"); break; case TextJustification.Right: columnSeparator = columnSeparator.Replace("- ", ": "); break; case TextJustification.Left: columnSeparator = columnSeparator.Replace(" -", " :"); break; case TextJustification.Justified: break; default: throw new ArgumentOutOfRangeException(); } } s += columnSeparator; } stringBuilder.AppendLine(s); for (var i = 0; i < Items.Count; i++) { var row = Items[i]; s = "|"; foreach (var property in filteredPropertyNames) { if (property.Name == Options.KeyName) { var keyValueParsed = ObjectToString(Keys[i]); var length = MaxWidth[property.Name] - keyValueParsed.Length; s += $" {keyValueParsed.ToValidOutput()}{new string(' ', length)} |"; } else { var value = GetValue(row, property); var length = MaxWidth[property.Name] - value.Length; s += $" {value.ToValidOutput()}{new string(' ', length)} |"; } } stringBuilder.AppendLine(s); } stringBuilder.AppendLine(); return(stringBuilder.ToString()); }
public string ToSpecFlowString() { if (Items.Count == 0) { return(string.Empty); } var s = "|"; var sb = new StringBuilder(); var filteredPropertyNames = FilterProperties(); foreach (var property in filteredPropertyNames) { var headerName = property.Name; if (ColumnNameOverrides.ContainsKey(property.Name)) { headerName = ColumnNameOverrides[property.Name]; } var length = MaxWidth[property.Name] - headerName.Length; var header = headerName.ToValidOutput(); var totalLength = $"{new string(' ', length)}{header}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{header}".Length; s += $" {new string(' ', length / 2)}{header}{new string(' ', remaining)} |"; } sb.AppendLine(s); foreach (var row in Items) { sb.Append('|'); foreach (var property in filteredPropertyNames) { var value = GetValue(row, property); var length = MaxWidth[property.Name] - value.Length; var output = value.ToValidOutput(); if (ColumnTextJustification.ContainsKey(property.Name)) { switch (ColumnTextJustification[property.Name]) { case TextJustification.Centered: var totalLength = $"{new string(' ', length)}{output}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{output}".Length; sb.Append(' '); sb.Append($"{new string(' ', length / 2)}{output}{new string(' ', remaining)}"); sb.Append(" |"); break; case TextJustification.Right: sb.Append(' '); sb.Append($"{new string(' ', length)}{output}"); sb.Append(" |"); break; case TextJustification.Left: sb.Append(' '); sb.Append($"{output}{new string(' ', length)}"); sb.Append(" |"); break; case TextJustification.Justified: sb.Append(' '); sb.Append($"{output}{new string(' ', length)}"); sb.Append(" |"); break; default: throw new ArgumentOutOfRangeException(); } } else { sb.Append(' '); sb.Append($"{output}{new string(' ', length)}"); sb.Append(" |"); } } sb.Append(Environment.NewLine); } sb.AppendLine(""); return(sb.ToString()); }
public override string ToString() { if (Items.Count == 0) { return(""); } var s = "|"; var stringBuilder = new StringBuilder(); var filteredPropertyNames = FilterProperties(); foreach (var property in filteredPropertyNames) { var headerName = property.Name; if (ColumnNameOverrides.ContainsKey(property.Name)) { headerName = ColumnNameOverrides[property.Name]; } var length = MaxWidth[property.Name] - headerName.Length; var totalLength = $"{new string(' ', length)}{headerName.ToValidOutput()}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{headerName.ToValidOutput()}".Length; s += $" {new string(' ', length / 2)}{headerName.ToValidOutput()}{new string(' ', remaining)} |"; } stringBuilder.AppendLine(s); s = filteredPropertyNames.Aggregate("|", (current, name) => current + $" {new string('-', MaxWidth[name.Name])} |"); stringBuilder.AppendLine(s); for (var index = 0; index < Items.Count; index++) { var row = Items[index]; stringBuilder.Append("|"); foreach (var property in filteredPropertyNames) { if (property.Name == Options.KeyName) { var keyValueParsed = ObjectToString(Keys[index]); var lengthParsed = MaxWidth[property.Name] - keyValueParsed.Length; if (ColumnTextJustification.ContainsKey(property.Name)) { switch (ColumnTextJustification[property.Name]) { case TextJustification.Centered: var totalLength = $"{new string(' ', lengthParsed)}{keyValueParsed.ToValidOutput()}" .Length; var remaining = totalLength - $"{new string(' ', lengthParsed / 2)}{keyValueParsed.ToValidOutput()}".Length; stringBuilder.Append(' '); stringBuilder.Append($"{new string(' ', lengthParsed / 2)}{keyValueParsed.ToValidOutput()}{new string(' ', remaining)}"); stringBuilder.Append(" |"); break; case TextJustification.Right: stringBuilder.Append(' '); stringBuilder.Append($"{new string(' ', lengthParsed)}{keyValueParsed.ToValidOutput()}"); stringBuilder.Append(" |"); break; case TextJustification.Left: stringBuilder.Append(' '); stringBuilder.Append($"{keyValueParsed.ToValidOutput()}{new string(' ', lengthParsed)}"); stringBuilder.Append(" |"); break; case TextJustification.Justified: stringBuilder.Append(' '); stringBuilder.Append($"{keyValueParsed.ToValidOutput()}{new string(' ', lengthParsed)}"); stringBuilder.Append(" |"); break; default: throw new ArgumentOutOfRangeException(); } } else { stringBuilder.Append(' '); stringBuilder.Append($"{keyValueParsed.ToValidOutput()}{new string(' ', lengthParsed)}"); stringBuilder.Append(" |"); } } else { var value = GetValue(row, property); var length = MaxWidth[property.Name] - value.Length; if (ColumnTextJustification.ContainsKey(property.Name)) { switch (ColumnTextJustification[property.Name]) { case TextJustification.Centered: var totalLength = $"{new string(' ', length)}{value.ToValidOutput()}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{value.ToValidOutput()}".Length; stringBuilder.Append(' '); stringBuilder.Append($"{new string(' ', length / 2)}{value.ToValidOutput()}{new string(' ', remaining)}"); stringBuilder.Append(" |"); break; case TextJustification.Right: stringBuilder.Append(' '); stringBuilder.Append($"{new string(' ', length)}{value.ToValidOutput()}"); stringBuilder.Append(" |"); break; case TextJustification.Left: stringBuilder.Append(' '); stringBuilder.Append($"{value.ToValidOutput()}{new string(' ', length)}"); stringBuilder.Append(" |"); break; case TextJustification.Justified: stringBuilder.Append(' '); stringBuilder.Append($"{value.ToValidOutput()}{new string(' ', length)}"); stringBuilder.Append(" |"); break; default: throw new ArgumentOutOfRangeException(); } } else { stringBuilder.Append(' '); stringBuilder.Append($"{value.ToValidOutput()}{new string(' ', length)}"); stringBuilder.Append(" |"); } } } stringBuilder.Append(Environment.NewLine); } stringBuilder.AppendLine(); return(stringBuilder.ToString()); }
public void ToConsole() { if (Items.Count == 0) { return; } var s = "|"; var filteredPropertyNames = FilterProperties(); foreach (var property in filteredPropertyNames) { var headerName = property.Name; if (ColumnNameOverrides.ContainsKey(property.Name)) { headerName = ColumnNameOverrides[property.Name]; } var length = MaxWidth[property.Name] - headerName.Length; var header = headerName.ToValidOutput(); var totalLength = $"{new string(' ', length)}{header}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{header}".Length; s += $" {new string(' ', length / 2)}{header}{new string(' ', remaining)} |"; } Console.WriteLine(s); s = filteredPropertyNames.Aggregate("|", (current, name) => current + $" {new string('-', MaxWidth[name.Name])} |"); Console.WriteLine(s); foreach (var row in Items) { Console.Write("|"); foreach (var property in filteredPropertyNames) { var value = GetValue(row, property); var length = MaxWidth[property.Name] - value.Length; var output = value.ToValidOutput(); if (ColumnTextJustification.ContainsKey(property.Name)) { switch (ColumnTextJustification[property.Name]) { case TextJustification.Centered: var totalLength = $"{new string(' ', length)}{output}".Length; var remaining = totalLength - $"{new string(' ', length / 2)}{output}".Length; ConsoleRender($"{new string(' ', length / 2)}{output}{new string(' ', remaining)}", property.Name); break; case TextJustification.Right: ConsoleRender($"{new string(' ', length)}{output}", property.Name); break; case TextJustification.Left: ConsoleRender($"{output}{new string(' ', length)}", property.Name); break; case TextJustification.Justified: ConsoleRender($"{output}{new string(' ', length)}", property.Name); break; default: throw new ArgumentOutOfRangeException(); } } else { ConsoleRender($"{output}{new string(' ', length)}", property.Name); } } Console.Write(Environment.NewLine); } Console.WriteLine(); }