1 3 5 22 23 package edu.neu.ccs.jmk; 24 25 import java.io.File ; 26 27 37 public class StringUtils 38 { 39 40 private StringUtils() { } 42 43 private final static char genericSeparatorChar = '/'; 44 private final static char genericPathSeparatorChar = ';'; 45 46 53 public static String localizePaths(String paths) { 54 paths = paths.replace(genericPathSeparatorChar, 55 File.pathSeparatorChar); 56 paths = paths.replace(genericSeparatorChar, 57 File.separatorChar); 58 return paths; 59 } 60 61 65 public static String generalizePaths(String paths) { 66 paths = paths.replace(File.pathSeparatorChar, 67 genericPathSeparatorChar); 68 paths = paths.replace(File.separatorChar, 69 genericSeparatorChar); 70 return paths; 71 } 72 73 82 static StringList patsubst(String pattern, 83 String replacement, 84 StringList input, 85 StringList list) { 86 if (input == null) 87 return list; 88 else { 89 StringList head = new StringList(""); 90 StringList last = head; 91 Matcher matcher = new Matcher(pattern); 92 for (; input != null; input = input.getRest()) { 93 String string = input.getString(); 94 String match = matcher.match(string); 95 if (match != null) { 96 if (Matcher.isPattern(replacement)) 97 string = Matcher.subst(match, replacement); 98 else 99 string = match + replacement; 100 } 101 StringList temp = new StringList(string); 102 last.setRest(temp); 103 last = temp; 104 } 105 last.setRest(list); 106 return head.getRest(); 107 } 108 } 109 110 113 static StringList subst(String pattern, 114 String replacement, 115 StringList input, 116 StringList list) { 117 if (input == null) 118 return list; 119 else { 120 StringList head = new StringList(""); 121 StringList last = head; 122 for (; input != null; input = input.getRest()) { 123 String string = input.getString(); 124 string = stringSubst(pattern, replacement, string); 125 StringList temp = new StringList(string); 126 last.setRest(temp); 127 last = temp; 128 } 129 last.setRest(list); 130 return head.getRest(); 131 } 132 } 133 134 138 static String stringSubst(String pattern, 139 String replacement, 140 String string) { 141 int i = string.indexOf(pattern); 142 if (i >= 0) { StringBuffer sb = new StringBuffer (); 144 do { 145 sb.append(string.substring(0, i)); 146 sb.append(replacement); 147 string = string.substring(i + pattern.length()); 148 i = string.indexOf(pattern); 149 } 150 while (i >= 0); 151 sb.append(string); 152 string = sb.toString(); 153 } 154 return string; 155 } 156 157 162 static StringList cat(StringList input, StringList list) { 163 StringBuffer sb = new StringBuffer (); 164 for (; input != null; input = input.getRest()) 165 sb.append(input.getString()); 166 return new StringList(sb.toString(), list); 167 } 168 169 175 static StringList glob(StringList input, StringList list) 176 throws CommandFailedException 177 { 178 if (input == null) 179 return list; 180 else { 181 StringList head = new StringList(""); 182 StringList last = head; 183 for (; input != null; input = input.getRest()) { 184 String string = input.getString(); 185 String [] globbed = FileOperator.glob(localizePaths(string)); 186 for (int i = 0; i < globbed.length; i++) { 187 StringList temp = new StringList(generalizePaths(globbed[i])); 188 last.setRest(temp); 189 last = temp; 190 } 191 } 192 last.setRest(list); 193 return head.getRest(); 194 } 195 } 196 197 203 static StringList dirs(StringList input, StringList list) { 204 if (input == null) 205 return list; 206 else { 207 StringList head = new StringList(""); 208 StringList last = head; 209 for (; input != null; input = input.getRest()) { 210 String string = input.getString(); 211 String [] dirList = FileOperator.dirs(localizePaths(string)); 212 for (int i = 0; i < dirList.length; i++) { 213 StringList temp = new StringList(generalizePaths(dirList[i])); 214 last.setRest(temp); 215 last = temp; 216 } 217 } 218 last.setRest(list); 219 return head.getRest(); 220 } 221 } 222 223 227 static StringList getprop(StringList input, StringList list) { 228 if (input == null) 229 return list; 230 else { 231 StringList head = new StringList(""); 232 StringList last = head; 233 for (; input != null; input = input.getRest()) { 234 String string = input.getString(); 235 String prop = System.getProperty(string); 236 if (prop != null) { 237 StringList temp = new StringList(generalizePaths(prop)); 238 last.setRest(temp); 239 last = temp; 240 } 241 } 242 last.setRest(list); 243 return head.getRest(); 244 } 245 } 246 247 250 static StringList join(StringList prefixes, 251 StringList suffixes, 252 StringList list) { 253 StringList head = new StringList(""); 254 StringList last = head; 255 for (StringList pres = prefixes; pres != null; pres = pres.getRest()) { 256 String prefix = pres.getString(); 257 for (StringList sufs = suffixes; sufs != null; sufs = sufs.getRest()) { 258 String suffix = sufs.getString(); 259 StringList temp = new StringList(prefix + suffix); 260 last.setRest(temp); 261 last = temp; 262 } 263 } 264 last.setRest(list); 265 return head.getRest(); 266 } 267 268 273 static StringList equal(StringList sl1, StringList sl2, StringList list) { 274 for (;;) { 275 if (sl1 == null) 276 return sl2 == null ? new StringList("true", list) : list; 277 else if (sl2 == null) 278 return list; 279 else if (!sl1.getString().equals(sl2.getString())) 280 return list; 281 else { 282 sl1 = sl1.getRest(); 283 sl2 = sl2.getRest(); 284 } 285 } 286 } 287 } 288 | Popular Tags |