optimizations to IntPairMap.java
[sbp.git] / src / edu / berkeley / sbp / util / StringUtil.java
index 8c046ee..ee6d486 100644 (file)
@@ -1,3 +1,5 @@
+// Copyright 2006-2007 all rights reserved; see LICENSE file for BSD-style license
+
 package edu.berkeley.sbp.util;
 
 /** miscellaneous string utilities */
@@ -25,6 +27,7 @@ public class StringUtil {
                 case '\'': sb.append("\\\'");  break;
                 case '\n':  sb.append("\\n");  break;
                 case '\r':  sb.append("\\r");  break;
+                case '\t':  sb.append("\\t");  break;
                 default: sb.append(c); break;
             }
         }
@@ -40,6 +43,7 @@ public class StringUtil {
                 switch(c) {
                     case 'r': c = '\r'; break;
                     case 'n': c = '\n'; break;
+                    case 't': c = '\t'; break;
                     default: break;
                 }
             }
@@ -53,7 +57,7 @@ public class StringUtil {
                 case '}':  sb.append("\\}");  break;
                 case ':':  sb.append("\\:");  break;
     */
-    public static String escapify(String s) { return escapify(s, "\\\n\r"); }
+    public static String escapify(String s) { return escapify(s, "\\\n\r\t"); }
     public static String escapify(String s, String illegal) {
         if (s==null) return null;
         StringBuffer sb = new StringBuffer();
@@ -63,10 +67,28 @@ public class StringUtil {
                 switch(c) {
                     case '\n':  sb.append("\\n"); continue;
                     case '\r':  sb.append("\\r"); continue;
+                    case '\t':  sb.append("\\t"); continue;
                     default:    sb.append('\\');  break;
                 }
-            sb.append(c);
+            else if (c < 32 || c >= 127) {
+                sb.append("\\x"+((int)c));
+            } else {
+                sb.append(c);
+            }
         }
         return sb.toString();
     }
+
+    public static String indent(String s, int indent) {
+        if (s.indexOf('\n')==-1) return s;
+        StringBuffer ret = new StringBuffer();
+        for(int i=0; i<s.length(); i++) {
+            char c = s.charAt(i);
+            ret.append(c);
+            if (c=='\n')
+                for(int j=0; j<indent; j++)
+                    ret.append(' ');
+        }
+        return ret.toString();
+    }
 }