/* Copyright (c) 2006, Sriram Srinivasan * * You may distribute this software under the terms of the license * specified in the file "License" */ package kilim.analysis; /** * Simple string utils for pretty printing support * */ public class Utils { public static String indentStr = ""; public static String spaces = " "; public static void indentWith(String s) { indentStr = indentStr + s; } public static void indent(int numSpaces) { indentWith(spaces.substring(0, numSpaces)); } public static void dedent(int numSpaces) { indentStr = indentStr.substring(0, indentStr.length() - numSpaces); } public static String format(String s) { if (indentStr.length() == 0) return s; int i = s.indexOf('\n'); // i is always the index of newline if (i >= 0) { StringBuffer sb = new StringBuffer(100); sb.append(indentStr); // leading indent int prev = 0; // prev value of i in loop do { // copy from prev to i (including \n) sb.append(s, prev, i + 1); // add indentation wherever \n occurs sb.append(indentStr); prev = i + 1; if (prev >= s.length()) break; i = s.indexOf('\n', prev); } while (i != -1); // copy left over chars from the last segment sb.append(s, prev, s.length()); return sb.toString(); } else { return indentStr + s; } } public static void resetIndentation() { indentStr = ""; } public static void p(String s) { System.out.print(format(s)); } public static void pn(String s) { System.out.println(format(s)); } public static void pn(int i) { System.out.println(format("" + i)); } public static void pn() { System.out.println(); } public static void pn(Object o) { pn((o == null) ? "null" : o.toString()); } }