Beispiel #1
0
        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());
        }
Beispiel #2
0
        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());
        }
Beispiel #3
0
        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());
        }
Beispiel #4
0
        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();
        }