/// <summary> /// Returns the column state information for the current object (used for rendering). /// Includes max width of column, alignment and index /// </summary> /// <returns></returns> public ColumnState[] GetColumnState() { if (ColumnsExpected < 1) { return(new ColumnState[0]); } var columns = new ColumnState[ColumnsExpected]; for (var i = 0; i < ColumnsExpected; ++i) { Alignment align; if (!Alignments.TryGetValue(i, out align)) { align = Alignment.Left; } columns[i] = new ColumnState { Index = i, Width = maxColumnLengths[i], Align = align }; } return(columns); }
/// <summary> /// /// </summary> /// <param name="writer"></param> /// <param name="index"></param> /// <param name="count"></param> /// <param name="text"></param> /// <param name="column"></param> void render_cell_text(TextWriter writer, int index, int count, string text, ColumnState column) { if (index > 0) { writer.Write(ColumnSeparator); } bool mustHaveRightPadding = !TrimTrailingWhitespace || index < count - 1; string padded = Pad(text, column.Width, column.Align, mustHaveRightPadding); writer.Write(padded); }
/// <summary> /// /// </summary> /// <param name="writer"></param> /// <param name="index"></param> /// <param name="count"></param> /// <param name="divider"></param> /// <param name="column"></param> void render_cell_divider(TextWriter writer, int index, int count, Divider divider, ColumnState column) { int padding = 0; if (index > 0 && !string.IsNullOrEmpty(ColumnSeparator)) { if (divider.UseColumnSeparator) { writer.Write(ColumnSeparator); } else { padding = ColumnSeparator.Length; } } writer.Write(new string(divider.Char, column.Width + padding)); }