2 *******************************************************************************
\r
3 * Copyright (C) 2001-2004, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.tool.translit;
\r
9 import com.ibm.icu.text.*;
\r
13 * A command-line interface to the ICU4J transliterators.
\r
16 public class Trans {
\r
18 public static void main(String[] args) throws Exception {
\r
19 boolean isHTML = false;
\r
22 String transName = null; // first untagged string is this
\r
23 String inText = null; // all other untagged strings are this
\r
24 String inName = null;
\r
25 String outName = null;
\r
27 while (pos < args.length) {
\r
28 if (args[pos].equals("-html")) {
\r
30 } else if (args[pos].equals("-i")) {
\r
31 if (++pos == args.length) usage();
\r
33 } else if (args[pos].equals("-o")) {
\r
34 if (++pos == args.length) usage();
\r
35 outName = args[pos];
\r
36 } else if (transName == null) {
\r
37 transName = args[pos];
\r
39 if (inText == null) {
\r
42 inText = inText + " " + args[pos];
\r
48 if (inText != null && inName != null) {
\r
52 Transliterator trans = Transliterator.getInstance(transName);
\r
53 BufferedReader in = null;
\r
54 if (inName != null) {
\r
55 in = new BufferedReader(new InputStreamReader(new FileInputStream(inName), "UTF8"));
\r
57 PrintWriter out = null;
\r
58 if (outName != null) {
\r
59 out = new PrintWriter(new OutputStreamWriter(new FileOutputStream(outName), "UTF8"));
\r
61 out = new PrintWriter(System.out);
\r
63 trans(trans, inText, in, out, isHTML);
\r
67 static void trans(Transliterator trans, String inText,
\r
68 BufferedReader in, PrintWriter out, boolean isHTML) throws IOException {
\r
69 boolean inTag = false; // If true, we are within a <tag>
\r
72 if (inText != null) {
\r
75 } else if (in != null) {
\r
76 line = in.readLine();
\r
82 // Pass tags between < and > unchanged
\r
83 StringBuffer buf = new StringBuffer();
\r
86 right = line.indexOf('>');
\r
88 right = line.length()-1;
\r
90 buf.append(line.substring(0, right+1));
\r
91 if (DEBUG) System.out.println("*S:" + line.substring(0, right+1));
\r
95 int left = line.indexOf('<', right+1);
\r
97 if (right < line.length()-1) {
\r
98 buf.append(trans.transliterate(line.substring(right+1)));
\r
99 if (DEBUG) System.out.println("T:" + line.substring(right+1));
\r
103 // Append transliterated segment right+1..left-1
\r
104 buf.append(trans.transliterate(line.substring(right+1, left)));
\r
105 if (DEBUG) System.out.println("T:" + line.substring(right+1, left));
\r
106 right = line.indexOf('>', left+1);
\r
109 buf.append(line.substring(left));
\r
110 if (DEBUG) System.out.println("S:" + line.substring(left));
\r
113 buf.append(line.substring(left, right+1));
\r
114 if (DEBUG) System.out.println("S:" + line.substring(left, right+1));
\r
116 line = buf.toString();
\r
118 line = trans.transliterate(line);
\r
124 static final boolean DEBUG = false;
\r
127 * Emit usage and die.
\r
129 static void usage() {
\r
130 System.out.println("Usage: java com.ibm.icu.dev.tool.translit.Trans [-html] <trans> ( <input> | -i <infile>) [ -o <outfile> ]");
\r
131 System.out.println("<trans> Name of transliterator");
\r
132 System.out.println("<input> Text to transliterate");
\r
133 System.out.println("<infile> Name of input file");
\r
134 System.out.println("<outfile> Name of output file");
\r
135 System.out.println("-html Only transliterate text outside of <tags>");
\r
136 System.out.println("Input may come from the command line or a file.\n");
\r
137 System.out.println("Ouput may go to stdout or a file.\n");
\r