KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > ibm > icu > text > FunctionReplacer


1 /*
2 **********************************************************************
3 * Copyright (c) 2002-2003, International Business Machines Corporation
4 * and others. All Rights Reserved.
5 **********************************************************************
6 * Date Name Description
7 * 01/14/2002 aliu Creation.
8 **********************************************************************
9 */

10
11 package com.ibm.icu.text;
12
13 /**
14  * A replacer that calls a transliterator to generate its output text.
15  * The input text to the transliterator is the output of another
16  * UnicodeReplacer object. That is, this replacer wraps another
17  * replacer with a transliterator.
18  * @author Alan Liu
19  */

20 class FunctionReplacer implements UnicodeReplacer {
21
22     /**
23      * The transliterator. Must not be null.
24      */

25     private Transliterator translit;
26
27     /**
28      * The replacer object. This generates text that is then
29      * processed by 'translit'. Must not be null.
30      */

31     private UnicodeReplacer replacer;
32
33     /**
34      * Construct a replacer that takes the output of the given
35      * replacer, passes it through the given transliterator, and emits
36      * the result as output.
37      */

38     public FunctionReplacer(Transliterator theTranslit,
39                             UnicodeReplacer theReplacer) {
40         translit = theTranslit;
41         replacer = theReplacer;
42     }
43
44     /**
45      * UnicodeReplacer API
46      */

47     public int replace(Replaceable text,
48                        int start,
49                        int limit,
50                        int[] cursor) {
51
52         // First delegate to subordinate replacer
53
int len = replacer.replace(text, start, limit, cursor);
54         limit = start + len;
55
56         // Now transliterate
57
limit = translit.transliterate(text, start, limit);
58
59         return limit - start;
60     }
61
62     /**
63      * UnicodeReplacer API
64      */

65     public String JavaDoc toReplacerPattern(boolean escapeUnprintable) {
66         StringBuffer JavaDoc rule = new StringBuffer JavaDoc("&");
67         rule.append(translit.getID());
68         rule.append("( ");
69         rule.append(replacer.toReplacerPattern(escapeUnprintable));
70         rule.append(" )");
71         return rule.toString();
72     }
73
74     /**
75      * Union the set of all characters that may output by this object
76      * into the given set.
77      * @param toUnionTo the set into which to union the output characters
78      */

79     public void addReplacementSetTo(UnicodeSet toUnionTo) {
80         toUnionTo.addAll(translit.getTargetSet());
81     }
82 }
83
84 //eof
85
Popular Tags