Package com.ibm.icu.text
Class CompoundTransliterator
- java.lang.Object
-
- com.ibm.icu.text.Transliterator
-
- com.ibm.icu.text.CompoundTransliterator
-
- All Implemented Interfaces:
StringTransform
,Transform<java.lang.String,java.lang.String>
class CompoundTransliterator extends Transliterator
A transliterator that is composed of two or more other transliterator objects linked together. For example, if one transliterator transliterates from script A to script B, and another transliterates from script B to script C, the two may be combined to form a new transliterator from A to C.Composed transliterators may not behave as expected. For example, inverses may not combine to form the identity transliterator. See the class documentation for
Transliterator
for details.Copyright © IBM Corporation 1999. All rights reserved.
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class com.ibm.icu.text.Transliterator
Transliterator.Factory, Transliterator.Position
-
-
Field Summary
Fields Modifier and Type Field Description private int
numAnonymousRBTs
private Transliterator[]
trans
-
Fields inherited from class com.ibm.icu.text.Transliterator
DEBUG, FORWARD, ID_DELIM, ID_SEP, REVERSE, VARIANT_SEP
-
-
Constructor Summary
Constructors Constructor Description CompoundTransliterator(java.lang.String id, UnicodeFilter filter2, Transliterator[] trans2, int numAnonymousRBTs2)
Internal method for safeClone...CompoundTransliterator(java.util.List<Transliterator> list)
Package private constructor for Transliterator from a vector of transliterators.CompoundTransliterator(java.util.List<Transliterator> list, int numAnonymousRBTs)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
_smartAppend(java.lang.StringBuilder buf, char c)
Append c to buf, unless buf is empty or buf already ends in c.void
addSourceTargetSet(UnicodeSet filter, UnicodeSet sourceSet, UnicodeSet targetSet)
Returns the set of all characters that may be generated as replacement text by this transliterator, filtered by BOTH the input filter, and the current getFilter().private void
computeMaximumContextLength()
Compute and set the length of the longest context required by this transliterator.int
getCount()
Returns the number of transliterators in this chain.Transliterator
getTransliterator(int index)
Returns the transliterator at the given index in this chain.protected void
handleTransliterate(Replaceable text, Transliterator.Position index, boolean incremental)
private void
init(java.util.List<Transliterator> list, int direction, boolean fixReverseID)
Finish constructing a transliterator: only to be called by constructors.Transliterator
safeClone()
Temporary hack for registry problem.java.lang.String
toRules(boolean escapeUnprintable)
Override Transliterator: Create a rule string that can be passed to createFromRules() to recreate this transliterator.-
Methods inherited from class com.ibm.icu.text.Transliterator
baseToRules, createFromRules, filteredTransliterate, finishTransliteration, getAvailableIDs, getAvailableSources, getAvailableTargets, getAvailableVariants, getBasicInstance, getDisplayName, getDisplayName, getDisplayName, getElements, getFilter, getFilterAsUnicodeSet, getID, getInstance, getInstance, getInverse, getMaximumContextLength, getSourceSet, getTargetSet, handleGetSourceSet, registerAlias, registerAny, registerClass, registerFactory, registerInstance, registerInstance, registerSpecialInverse, setFilter, setID, setMaximumContextLength, transform, transliterate, transliterate, transliterate, transliterate, transliterate, transliterate, unregister
-
-
-
-
Field Detail
-
trans
private Transliterator[] trans
-
numAnonymousRBTs
private int numAnonymousRBTs
-
-
Constructor Detail
-
CompoundTransliterator
CompoundTransliterator(java.util.List<Transliterator> list)
Package private constructor for Transliterator from a vector of transliterators. The caller is responsible for fixing up the ID.
-
CompoundTransliterator
CompoundTransliterator(java.util.List<Transliterator> list, int numAnonymousRBTs)
-
CompoundTransliterator
CompoundTransliterator(java.lang.String id, UnicodeFilter filter2, Transliterator[] trans2, int numAnonymousRBTs2)
Internal method for safeClone...- Parameters:
id
-filter2
-trans2
-numAnonymousRBTs2
-
-
-
Method Detail
-
init
private void init(java.util.List<Transliterator> list, int direction, boolean fixReverseID)
Finish constructing a transliterator: only to be called by constructors. Before calling init(), set trans and filter to NULL.- Parameters:
list
- a vector of transliterator objects to be adopted. It should NOT be empty. The list should be in declared order. That is, it should be in the FORWARD order; if direction is REVERSE then the list order will be reversed.direction
- either FORWARD or REVERSEfixReverseID
- if true, then reconstruct the ID of reverse entries by calling getID() of component entries. Some constructors do not require this because they apply a facade ID anyway.
-
getCount
public int getCount()
Returns the number of transliterators in this chain.- Returns:
- number of transliterators in this chain.
-
getTransliterator
public Transliterator getTransliterator(int index)
Returns the transliterator at the given index in this chain.- Parameters:
index
- index into chain, from 0 togetCount() - 1
- Returns:
- transliterator at the given index
-
_smartAppend
private static void _smartAppend(java.lang.StringBuilder buf, char c)
Append c to buf, unless buf is empty or buf already ends in c.
-
toRules
public java.lang.String toRules(boolean escapeUnprintable)
Override Transliterator: Create a rule string that can be passed to createFromRules() to recreate this transliterator.- Overrides:
toRules
in classTransliterator
- Parameters:
escapeUnprintable
- if true then convert unprintable character to their hex escape representations, \\uxxxx or \\Uxxxxxxxx. Unprintable characters are those other than U+000A, U+0020..U+007E.- Returns:
- the rule string
-
addSourceTargetSet
public void addSourceTargetSet(UnicodeSet filter, UnicodeSet sourceSet, UnicodeSet targetSet)
Description copied from class:Transliterator
Returns the set of all characters that may be generated as replacement text by this transliterator, filtered by BOTH the input filter, and the current getFilter().SHOULD BE OVERRIDDEN BY SUBCLASSES. It is probably an error for any transliterator to NOT override this, but we can't force them to for backwards compatibility.
Other methods vector through this.
When gathering the information on source and target, the compound transliterator makes things complicated. For example, suppose we have:
Global FILTER = [ax] a > b; :: NULL; b > c; x > d;
While the filter just allows a and x, b is an intermediate result, which could produce c. So the source and target sets cannot be gathered independently. What we have to do is filter the sources for the first transliterator according to the global filter, intersect that transliterator's filter. Based on that we get the target. The next transliterator gets as a global filter (global + last target). And so on.There is another complication:
Global FILTER = [ax] a >|b; b >c;
Even though b would be filtered from the input, whenever we have a backup, it could be part of the input. So ideally we will change the global filter as we go.- Overrides:
addSourceTargetSet
in classTransliterator
targetSet
- TODO- See Also:
Transliterator.getTargetSet()
-
handleTransliterate
protected void handleTransliterate(Replaceable text, Transliterator.Position index, boolean incremental)
- Specified by:
handleTransliterate
in classTransliterator
- Parameters:
text
- the buffer holding transliterated and untransliterated textindex
- the indices indicating the start, limit, context start, and context limit of the text.incremental
- if true, assume more text may be inserted atpos.limit
and act accordingly. Otherwise, transliterate all text betweenpos.start
andpos.limit
and movepos.start
up topos.limit
.- See Also:
Transliterator.transliterate(com.ibm.icu.text.Replaceable, int, int)
-
computeMaximumContextLength
private void computeMaximumContextLength()
Compute and set the length of the longest context required by this transliterator. This is preceding context.
-
safeClone
public Transliterator safeClone()
Temporary hack for registry problem. Needs to be replaced by better architecture.
-
-