示例#1
0
        public static string Of(DataTable dataTable, FlipTablesPad pad)
        {
            var headers = dataTable.Columns.OfType <DataColumn>().AsEnumerable().Select(o => o.ColumnName).ToArray();

            return(FlipTable.Of(headers,
                                (from DataRow r in dataTable.Rows select headers.Select(h => r[h].ToString()).ToArray()).ToArray(), pad));
        }
示例#2
0
        public static string Of(DataSet dataSet, FlipTablesPad pad)
        {
            var sb = new StringBuilder(1024);

            foreach (DataTable dt in dataSet.Tables)
            {
                sb.AppendLine(Of(dt, pad));
            }
            sb.AppendLine();

            return(sb.ToString());
        }
示例#3
0
 /** Create a new table with the specified headers and row data. */
 public static string Of(string[] headers, string[][] data, FlipTablesPad pad = FlipTablesPad.Left)
 {
     if (headers == null)
     {
         throw new NullReferenceException("headers == null");
     }
     if (headers.Length == 0)
     {
         throw new ArgumentException("Headers must not be empty.");
     }
     if (data == null)
     {
         throw new NullReferenceException("data == null");
     }
     return(new FlipTable(headers, data, pad).ToString());
 }
示例#4
0
        public static string Of(object obj, FlipTablesPad pad)
        {
            var ret = "";

            if (!obj.GetType().IsPrimitive&& obj.GetType() != typeof(string) && obj is IEnumerable)
            {
                var enumerable = (IEnumerable)obj;
                var enumerator = enumerable.GetEnumerator();
                var list       = new List <string[]>();

                var can = enumerator.MoveNext();
                if (!can)
                {
                    return("");
                }

                var current        = enumerator.Current;
                var headerProperty = current.GetType().GetProperties();

                do
                {
                    var data = new List <string>();
                    foreach (var header in headerProperty)
                    {
                        var value = header.GetValue(current, null) ?? "(null)";
                        if (!value.GetType().IsPrimitive&& value.GetType() != typeof(string) && value is IEnumerable)
                        {
                            value = Of(value, pad);
                        }

                        data.Add(value.ToString());
                    }

                    list.Add(data.ToArray());
                } while (enumerator.MoveNext());

                ret += Of(headerProperty.Select(o => o.Name).ToArray(), list.ToArray(), pad);
            }
            else if (!obj.GetType().IsPrimitive&& obj.GetType() != typeof(string) && obj.GetType().IsClass)
            {
                ret += Of <object>(obj, pad);
            }

            return(ret);
        }
示例#5
0
        private static string Of <T>(T obj, FlipTablesPad pad) where T : class
        {
            var headerProperty = obj.GetType().GetProperties();

            var data = new List <string>();

            foreach (var header in headerProperty)
            {
                var value = header.GetValue(obj, null);
                var type  = (value ?? "(null)").GetType();
                if (type != typeof(string) && type.IsClass)
                {
                    value = Of(value, pad);
                }

                data.Add((value ?? "(null)").ToString());
            }

            return(Of(headerProperty.Select(o => o.Name).ToArray(), new[] { data.ToArray() }, pad));
        }
示例#6
0
        private FlipTable(string[] headers, string[][] data, FlipTablesPad pad)
        {
            this.pad     = pad;
            this.headers = headers;
            this.data    = data;

            columns      = headers.Length;
            columnWidths = new int[columns];
            for (int row = -1; row < data.Length; row++)
            {
                var rowData = (row == -1) ? headers : data[row]; // Hack to parse headers too.
                if (rowData.Length != columns)
                {
                    throw new ArgumentException(
                              $"Row {row + 1}'s {rowData.Length} columns != {columns} columns");
                }
                for (int column = 0; column < columns; column++)
                {
                    foreach (string rowDataLine in rowData[column].Split('\n'))
                    {
                        columnWidths[column] = Math.Max(columnWidths[column], rowDataLine.Length);
                    }
                }
            }

            var emptyWidth = 3 * (columns - 1); // Account for column dividers and their spacing.

            foreach (int columnWidth in columnWidths)
            {
                emptyWidth += columnWidth;
            }
            this.emptyWidth = emptyWidth + 2;

            if (emptyWidth < EMPTY.Length)
            { // Make sure we're wide enough for the empty text.
                columnWidths[columns - 1] += EMPTY.Length - emptyWidth;
            }
        }
 public static string FlipTablesFrom(this DataSet dataSet, FlipTablesPad pad = FlipTablesPad.Left)
 {
     return(FlipTable.Of(dataSet, pad));
 }
 internal static string FlipTablesFromObject <T>(this T obj, FlipTablesPad pad = FlipTablesPad.Left) where T : class
 {
     return(FlipTable.Of(obj, pad));
 }
 public static string FlipTablesFrom(this object obj, FlipTablesPad pad = FlipTablesPad.Left)
 {
     return(FlipTable.Of(obj, pad));
 }