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