diff -r 84bab99dda50 -r 8e38caf43ca8 java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java --- a/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Sat Aug 15 14:40:48 2015 +0200 +++ b/java/sql-dk/src/info/globalcode/sql/dk/formatting/TabularFormatter.java Sat Aug 15 16:12:06 2015 +0200 @@ -19,6 +19,7 @@ import info.globalcode.sql.dk.ColorfulPrintWriter; import static info.globalcode.sql.dk.ColorfulPrintWriter.*; +import info.globalcode.sql.dk.Functions; import static info.globalcode.sql.dk.Functions.lpad; import static info.globalcode.sql.dk.Functions.rpad; import static info.globalcode.sql.dk.Functions.repeat; @@ -26,8 +27,6 @@ import static info.globalcode.sql.dk.formatting.CommonProperties.COLORFUL; import static info.globalcode.sql.dk.formatting.CommonProperties.COLORFUL_DESCRIPTION; import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; /** *

@@ -53,8 +52,6 @@ private static final String HEADER_TYPE_SUFFIX = ")"; public static final String PROPERTY_ASCII = "ascii"; public static final String PROPERTY_TRIM = "trim"; - private static final String NBSP = " "; - private static final Pattern whitespaceToReplace = Pattern.compile("\\n|\\r|\\t|" + NBSP); protected ColorfulPrintWriter out; private boolean firstResult = true; private int[] columnWidth; @@ -165,8 +162,7 @@ printTableBorder(" │ "); } - String valueString = toString(value); - printValueWithWhitespaceReplaced(valueString); + Functions.printValueWithWhitespaceReplaced(out, toString(value), TerminalColor.Cyan, TerminalColor.Red); if (isCurrentColumnLast()) { printTableBorder(" │"); @@ -277,36 +273,4 @@ protected void printTableIndent() { out.print(" "); } - - protected void printValueWithWhitespaceReplaced(String valueString) { - - Matcher m = whitespaceToReplace.matcher(valueString); - - int start = 0; - while (m.find(start)) { - - out.print(TerminalColor.Cyan, valueString.substring(start, m.start())); - - switch (m.group()) { - case "\n": - out.print(TerminalColor.Red, "↲"); - break; - case "\r": - out.print(TerminalColor.Red, "⏎"); - break; - case "\t": - out.print(TerminalColor.Red, "↹"); - break; - case NBSP: - out.print(TerminalColor.Red, "⎵"); - break; - default: - throw new IllegalStateException("Unexpected whitespace token: „" + m.group() + "“"); - } - - start = m.end(); - } - - out.print(TerminalColor.Cyan, valueString.substring(start, valueString.length())); - } }