Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ public class AlignedTablePrinter
private final List<Boolean> numericFields;
private final Writer writer;

private boolean headerOutput;
private boolean headerRendered;
private long rowCount;

public AlignedTablePrinter(List<Column> columns, Writer writer)
Expand Down Expand Up @@ -84,34 +84,34 @@ public void printRows(List<List<?>> rows, boolean complete)
rowCount += rows.size();
int columns = fieldNames.size();

int[] maxWidth = new int[columns];
int[] columnWidth = new int[columns];
for (int i = 0; i < columns; i++) {
maxWidth[i] = max(1, consoleWidth(fieldNames.get(i)));
columnWidth[i] = max(1, consoleWidth(fieldNames.get(i)));
}

for (List<?> row : rows) {
for (int i = 0; i < row.size(); i++) {
String s = formatValue(row.get(i));
maxWidth[i] = max(maxWidth[i], maxLineLength(s));
String value = formatValue(row.get(i));
columnWidth[i] = max(columnWidth[i], maxLineLength(value));
}
}

if (!headerOutput) {
headerOutput = true;
if (!headerRendered) {
headerRendered = true;

for (int i = 0; i < columns; i++) {
if (i > 0) {
writer.append('|');
}
String name = fieldNames.get(i);
writer.append(center(name, maxWidth[i], 1));
writer.append(center(fieldNames.get(i), columnWidth[i], 1));
}
writer.append('\n');

for (int i = 0; i < columns; i++) {
if (i > 0) {
writer.append('+');
}
writer.append(repeat("-", maxWidth[i] + 2));
writer.append(repeat("-", columnWidth[i] + 2));
}
writer.append('\n');
}
Expand All @@ -120,8 +120,8 @@ public void printRows(List<List<?>> rows, boolean complete)
List<List<String>> columnLines = new ArrayList<>(columns);
int maxLines = 1;
for (int i = 0; i < columns; i++) {
String s = formatValue(row.get(i));
ImmutableList<String> lines = ImmutableList.copyOf(LINE_SPLITTER.split(s));
String value = formatValue(row.get(i));
ImmutableList<String> lines = ImmutableList.copyOf(LINE_SPLITTER.split(value));
columnLines.add(lines);
maxLines = max(maxLines, lines.size());
}
Expand All @@ -132,9 +132,9 @@ public void printRows(List<List<?>> rows, boolean complete)
writer.append('|');
}
List<String> lines = columnLines.get(column);
String s = (line < lines.size()) ? lines.get(line) : "";
String value = (line < lines.size()) ? lines.get(line) : "";
boolean numeric = numericFields.get(column);
String out = align(s, maxWidth[column], 1, numeric);
String out = align(value, columnWidth[column], 1, numeric);
if ((!complete || (rowCount > 1)) && ((line + 1) < lines.size())) {
out = out.substring(0, out.length() - 1) + "+";
}
Expand All @@ -147,40 +147,40 @@ public void printRows(List<List<?>> rows, boolean complete)
writer.flush();
}

private static String center(String s, int maxWidth, int padding)
private static String center(String value, int maxWidth, int padding)
{
int width = consoleWidth(s);
checkState(width <= maxWidth, "string width is greater than max width");
int width = consoleWidth(value);
checkState(width <= maxWidth, format("Variable width %d is greater than column width %d", width, maxWidth));
int left = (maxWidth - width) / 2;
int right = maxWidth - (left + width);
return repeat(" ", left + padding) + s + repeat(" ", right + padding);
return repeat(" ", left + padding) + value + repeat(" ", right + padding);
}

private static String align(String s, int maxWidth, int padding, boolean right)
private static String align(String value, int maxWidth, int padding, boolean right)
{
int width = consoleWidth(s);
checkState(width <= maxWidth, "string width is greater than max width");
String large = repeat(" ", (maxWidth - width) + padding);
int width = consoleWidth(value);
checkState(width <= maxWidth, format("Variable width %d is greater than column width %d", width, maxWidth));
String large = repeat(" ", maxWidth - width + padding);
String small = repeat(" ", padding);
return right ? (large + s + small) : (small + s + large);
return right ? (large + value + small) : (small + value + large);
}

static int maxLineLength(String s)
static int maxLineLength(String value)
{
int n = 0;
for (String line : LINE_SPLITTER.split(s)) {
n = max(n, consoleWidth(line));
int result = 0;
for (String line : LINE_SPLITTER.split(value)) {
result = max(result, consoleWidth(line));
}
return n;
return result;
}

static int consoleWidth(String s)
static int consoleWidth(String value)
{
CharSequence plain = stripAnsi(s);
int n = 0;
CharSequence plain = stripAnsi(value);
int result = 0;
for (int i = 0; i < plain.length(); i++) {
n += max(wcwidth(plain.charAt(i)), 0);
result += max(wcwidth(plain.charAt(i)), 0);
}
return n;
return result;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ public class MarkdownTablePrinter
private final List<Align> alignments;
private final Writer writer;

private boolean headerOutput;
private boolean headerRendered;

public MarkdownTablePrinter(List<Column> columns, Writer writer)
{
Expand All @@ -71,29 +71,30 @@ public void printRows(List<List<?>> rows, boolean complete)
{
int columns = fieldNames.size();

int[] maxWidth = new int[columns];
int[] columnWidth = new int[columns];
for (int i = 0; i < columns; i++) {
maxWidth[i] = max(1, consoleWidth(fieldNames.get(i)));
columnWidth[i] = max(1, consoleWidth(fieldNames.get(i)));
}

for (List<?> row : rows) {
for (int i = 0; i < row.size(); i++) {
String s = formatValue(row.get(i));
maxWidth[i] = max(maxWidth[i], consoleWidth(s));
columnWidth[i] = max(columnWidth[i], consoleWidth(s));
}
}

if (!headerOutput) {
headerOutput = true;
if (!headerRendered) {
headerRendered = true;

for (int i = 0; i < columns; i++) {
writer.append('|');
writer.append(align(fieldNames.get(i), maxWidth[i], alignments.get(i)));
writer.append(align(fieldNames.get(i), columnWidth[i], alignments.get(i)));
}
writer.append("|\n");

for (int i = 0; i < columns; i++) {
writer.append("| ");
writer.append(repeat("-", maxWidth[i]));
writer.append(repeat("-", columnWidth[i]));
writer.write(alignments.get(i) == Align.RIGHT ? ':' : ' ');
}
writer.append("|\n");
Expand All @@ -102,7 +103,7 @@ public void printRows(List<List<?>> rows, boolean complete)
for (List<?> row : rows) {
for (int column = 0; column < columns; column++) {
writer.append('|');
writer.append(align(formatValue(row.get(column)), maxWidth[column], alignments.get(column)));
writer.append(align(formatValue(row.get(column)), columnWidth[column], alignments.get(column)));
}
writer.append("|\n");
}
Expand All @@ -127,9 +128,8 @@ private static String align(String value, int maxWidth, Align align)
{
int width = consoleWidth(value);
checkState(width <= maxWidth, "Variable width %s is greater than column width %s", width, maxWidth);
String large = repeat(" ", (maxWidth - width) + 1);
String small = repeat(" ", 1);
return align == Align.RIGHT ? (large + value + small) : (small + value + large);
String padding = repeat(" ", (maxWidth - width) + 1);
return align == Align.RIGHT ? (padding + value + " ") : (" " + value + padding);
}

static int consoleWidth(String value)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -300,9 +300,9 @@ static List<List<?>> rows(List<?>... rows)
return asList(rows);
}

static byte[] bytes(String s)
static byte[] bytes(String value)
{
return s.getBytes(UTF_8);
return value.getBytes(UTF_8);
}

static class KeyValue
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,8 @@ static List<List<?>> rows(List<?>... rows)
return asList(rows);
}

static byte[] bytes(String s)
static byte[] bytes(String value)
{
return s.getBytes(UTF_8);
return value.getBytes(UTF_8);
}
}