1aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* GENERATED SOURCE. DO NOT MODIFY. */ 2aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin/* 3aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 4aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Copyright (C) 2002-2015, International Business Machines Corporation and 5aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * others. All Rights Reserved. 6aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin ******************************************************************************* 7aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 8aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpackage android.icu.dev.util; 9aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 10aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.io.BufferedReader; 11aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.io.IOException; 12aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.io.PrintWriter; 13aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinimport java.util.Locale; 14aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 15aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffinpublic class FileUtilities { 16aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static void appendFile(String filename, String encoding, PrintWriter output) throws IOException { 17aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin appendFile(filename, encoding, output, null); 18aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 19aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 20aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static void appendFile(String filename, String encoding, PrintWriter output, String[] replacementList) throws IOException { 21aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin BufferedReader br = BagFormatter.openReader("", filename, encoding); 22aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /* 23aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin FileInputStream fis = new FileInputStream(filename); 24aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin InputStreamReader isr = (encoding == UTF8_UNIX || encoding == UTF8_WINDOWS) ? new InputStreamReader(fis, "UTF8") : new InputStreamReader(fis); 25aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin BufferedReader br = new BufferedReader(isr, 32*1024); 26aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 27aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin try { 28aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin appendBufferedReader(br, output, replacementList); 29aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } finally { 30aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin br.close(); 31aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 32aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 33aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 34aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static void appendBufferedReader(BufferedReader br, 35aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin PrintWriter output, String[] replacementList) throws IOException { 36aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin while (true) { 37aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String line = br.readLine(); 38aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (line == null) break; 39aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (replacementList != null) { 40aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < replacementList.length; i += 2) { 41aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin line = replace(line, replacementList[i], replacementList[i+1]); 42aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 43aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 44aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin output.println(line); 45aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 46aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin br.close(); 47aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 48aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 49aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin /** 50aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin * Replaces all occurances of piece with replacement, and returns new String 51aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin */ 52aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static String replace(String source, String piece, String replacement) { 53aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (source == null || source.length() < piece.length()) return source; 54aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin int pos = 0; 55aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin while (true) { 56aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos = source.indexOf(piece, pos); 57aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (pos < 0) return source; 58aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin source = source.substring(0,pos) + replacement + source.substring(pos + piece.length()); 59aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin pos += replacement.length(); 60aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 61aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 62aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 63aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static String replace(String source, String[][] replacements) { 64aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return replace(source, replacements, replacements.length); 65aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 66aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 67aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static String replace(String source, String[][] replacements, int count) { 68aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < count; ++i) { 69aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin source = replace(source, replacements[i][0], replacements[i][1]); 70aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 71aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return source; 72aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 73aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 74aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static String replace(String source, String[][] replacements, boolean reverse) { 75aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (!reverse) return replace(source, replacements); 76aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin for (int i = 0; i < replacements.length; ++i) { 77aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin source = replace(source, replacements[i][1], replacements[i][0]); 78aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 79aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return source; 80aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 81aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin 82aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin public static String anchorize(String source) { 83aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin String result = source.toLowerCase(Locale.ENGLISH).replaceAll("[^\\p{L}\\p{N}]+", "_"); 84aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (result.endsWith("_")) result = result.substring(0,result.length()-1); 85aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin if (result.startsWith("_")) result = result.substring(1); 86aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin return result; 87aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin } 88aefe4d1f8f1773ead1a52f7a5d2c9e0009353600Paul Duffin} 89