]> gitweb.fperrin.net Git - Dictionary.git/blob - jars/icu4j-4_4_2-src/main/tests/translit/src/com/ibm/icu/dev/test/util/Quoter.java
go
[Dictionary.git] / jars / icu4j-4_4_2-src / main / tests / translit / src / com / ibm / icu / dev / test / util / Quoter.java
1 /*\r
2  *******************************************************************************\r
3  * Copyright (C) 2002-2010, International Business Machines Corporation and    *\r
4  * others. All Rights Reserved.                                                *\r
5  *******************************************************************************\r
6  */\r
7 package com.ibm.icu.dev.test.util;\r
8 \r
9 import com.ibm.icu.impl.Utility;\r
10 import com.ibm.icu.text.UTF16;\r
11 \r
12 public abstract class Quoter {\r
13     private static boolean DEBUG = false;\r
14     \r
15     protected boolean quoting = false;\r
16     protected StringBuffer output = new StringBuffer();\r
17     \r
18     public void setQuoting(boolean value) {\r
19         quoting = value;\r
20     }\r
21     public boolean isQuoting() {\r
22         return quoting;\r
23     }\r
24     public void clear() {\r
25         quoting = false;\r
26         output.setLength(0);\r
27     }\r
28     public int length() {\r
29         return output.length();\r
30     }\r
31     public Quoter append(String string) {\r
32         output.append(string);\r
33         return this;\r
34     }\r
35     public Quoter append(int codepoint) {\r
36         return append(UTF16.valueOf(codepoint));\r
37     }\r
38     // warning, allows access to internals\r
39     public String toString() {\r
40         setQuoting(false); // finish quoting\r
41         return output.toString();\r
42     }\r
43     /**\r
44      * Implements standard ICU rule quoting\r
45      */\r
46     public static class RuleQuoter extends Quoter {\r
47         private StringBuffer quoteBuffer = new StringBuffer();\r
48         public void setQuoting(boolean value) {\r
49             if (quoting == value) return;\r
50             if (quoting) { // stop quoting\r
51                 Utility.appendToRule(output, (int)-1, true, false, quoteBuffer); // close previous quote\r
52             }\r
53             quoting = value;\r
54         }\r
55         public Quoter append(String s) {\r
56             if (DEBUG) System.out.println("\"" + s + "\"");\r
57             if (quoting) {\r
58                 Utility.appendToRule(output, s, false, false, quoteBuffer);\r
59             } else {\r
60                 output.append(s);\r
61             }\r
62             return this;\r
63         }\r
64     }\r
65 }