java/sql-dk/src/info/globalcode/sql/dk/Functions.java
branchv_0
changeset 218 8e38caf43ca8
parent 213 39d154429f7a
child 220 0bc544b38cfa
equal deleted inserted replaced
217:84bab99dda50 218:8e38caf43ca8
    22 import java.io.File;
    22 import java.io.File;
    23 import java.io.IOException;
    23 import java.io.IOException;
    24 import java.io.InputStream;
    24 import java.io.InputStream;
    25 import java.io.InputStreamReader;
    25 import java.io.InputStreamReader;
    26 import java.io.PrintWriter;
    26 import java.io.PrintWriter;
    27 import java.util.ArrayDeque;
       
    28 import java.util.ArrayList;
    27 import java.util.ArrayList;
    29 import java.util.Arrays;
    28 import java.util.Arrays;
    30 import java.util.Collection;
    29 import java.util.Collection;
    31 import java.util.Collections;
    30 import java.util.Collections;
    32 import java.util.Deque;
       
    33 import java.util.List;
    31 import java.util.List;
    34 import java.util.Map;
    32 import java.util.Map;
       
    33 import java.util.regex.Matcher;
       
    34 import java.util.regex.Pattern;
    35 
    35 
    36 /**
    36 /**
    37  *
    37  *
    38  * @author Ing. František Kučera (frantovo.cz)
    38  * @author Ing. František Kučera (frantovo.cz)
    39  */
    39  */
    40 public class Functions {
    40 public class Functions {
       
    41 
       
    42 	private static final String NBSP = " ";
       
    43 	private static final Pattern WHITESPACE_TO_REPLACE = Pattern.compile("\\n|\\r|\\t|" + NBSP);
    41 
    44 
    42 	private Functions() {
    45 	private Functions() {
    43 	}
    46 	}
    44 
    47 
    45 	public static boolean equalz(Object a, Object b) {
    48 	public static boolean equalz(Object a, Object b) {
   183 			hierarchy.add(current);
   186 			hierarchy.add(current);
   184 		}
   187 		}
   185 
   188 
   186 		return hierarchy;
   189 		return hierarchy;
   187 	}
   190 	}
       
   191 
       
   192 	/**
       
   193 	 * TODO: support background or styles and move to ColorfulPrintWriter
       
   194 	 *
       
   195 	 * @param out
       
   196 	 * @param valueString
       
   197 	 * @param basicColor
       
   198 	 * @param escapeColor
       
   199 	 */
       
   200 	public static void printValueWithWhitespaceReplaced(ColorfulPrintWriter out, String valueString, ColorfulPrintWriter.TerminalColor basicColor, ColorfulPrintWriter.TerminalColor escapeColor) {
       
   201 
       
   202 		Matcher m = WHITESPACE_TO_REPLACE.matcher(valueString);
       
   203 
       
   204 		int start = 0;
       
   205 
       
   206 		while (m.find(start)) {
       
   207 
       
   208 			printColorOrNot(out, basicColor, valueString.substring(start, m.start()));
       
   209 
       
   210 			switch (m.group()) {
       
   211 				case "\n":
       
   212 					out.print(escapeColor, "↲");
       
   213 					break;
       
   214 				case "\r":
       
   215 					out.print(escapeColor, "⏎");
       
   216 					break;
       
   217 				case "\t":
       
   218 					out.print(escapeColor, "↹");
       
   219 					break;
       
   220 				case NBSP:
       
   221 					out.print(escapeColor, "⎵");
       
   222 					break;
       
   223 				default:
       
   224 					throw new IllegalStateException("Unexpected whitespace token: „" + m.group() + "“");
       
   225 			}
       
   226 
       
   227 			start = m.end();
       
   228 		}
       
   229 
       
   230 		printColorOrNot(out, basicColor, valueString.substring(start, valueString.length()));
       
   231 	}
       
   232 
       
   233 	private static void printColorOrNot(ColorfulPrintWriter out, ColorfulPrintWriter.TerminalColor color, String text) {
       
   234 		if (color == null) {
       
   235 			out.print(text);
       
   236 		} else {
       
   237 			out.print(color, text);
       
   238 		}
       
   239 	}
   188 }
   240 }