2 *******************************************************************************
\r
3 * Copyright (C) 2002-2010, International Business Machines Corporation and *
\r
4 * others. All Rights Reserved. *
\r
5 *******************************************************************************
\r
7 package com.ibm.icu.dev.test.util;
\r
9 import com.ibm.icu.impl.Utility;
\r
10 import com.ibm.icu.text.UTF16;
\r
12 public abstract class Quoter {
\r
13 private static boolean DEBUG = false;
\r
15 protected boolean quoting = false;
\r
16 protected StringBuffer output = new StringBuffer();
\r
18 public void setQuoting(boolean value) {
\r
21 public boolean isQuoting() {
\r
24 public void clear() {
\r
26 output.setLength(0);
\r
28 public int length() {
\r
29 return output.length();
\r
31 public Quoter append(String string) {
\r
32 output.append(string);
\r
35 public Quoter append(int codepoint) {
\r
36 return append(UTF16.valueOf(codepoint));
\r
38 // warning, allows access to internals
\r
39 public String toString() {
\r
40 setQuoting(false); // finish quoting
\r
41 return output.toString();
\r
44 * Implements standard ICU rule quoting
\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
55 public Quoter append(String s) {
\r
56 if (DEBUG) System.out.println("\"" + s + "\"");
\r
58 Utility.appendToRule(output, s, false, false, quoteBuffer);
\r