/* */ package com.ibm.icu.text;
/* */
/* */ import com.ibm.icu.impl.ICUResourceBundle;
/* */ import com.ibm.icu.impl.LocaleUtility;
/* */ import com.ibm.icu.lang.UScript;
/* */ import com.ibm.icu.util.CaseInsensitiveString;
/* */ import com.ibm.icu.util.ULocale;
/* */ import com.ibm.icu.util.UResourceBundle;
/* */ import java.util.ArrayList;
/* */ import java.util.Collections;
/* */ import java.util.Enumeration;
/* */ import java.util.HashMap;
/* */ import java.util.List;
/* */ import java.util.Locale;
/* */ import java.util.Map;
/* */ import java.util.MissingResourceException;
/* */ import java.util.ResourceBundle;
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ class TransliteratorRegistry
/* */ {
/* */ private static final char LOCALE_SEP = '_';
/* */ private static final String NO_VARIANT = "";
/* */ private static final String ANY = "Any";
/* */ private Map<CaseInsensitiveString, Object[]> registry;
/* */ private Map<CaseInsensitiveString, Map<CaseInsensitiveString, List<CaseInsensitiveString>>> specDAG;
/* */ private List<CaseInsensitiveString> availableIDs;
/* */ private static final boolean DEBUG = false;
/* */
/* */ static class Spec
/* */ {
/* */ private String top;
/* */ private String spec;
/* */ private String nextSpec;
/* */ private String scriptName;
/* */ private boolean isSpecLocale;
/* */ private boolean isNextLocale;
/* */ private ICUResourceBundle res;
/* */
/* */ public Spec(String theSpec)
/* */ {
/* 100 */ this.top = theSpec;
/* 101 */ this.spec = null;
/* 102 */ this.scriptName = null;
/* */
/* */ try
/* */ {
/* 106 */ int script = UScript.getCodeFromName(this.top);
/* */
/* */
/* 109 */ int[] s = UScript.getCode(this.top);
/* 110 */ if (s != null) {
/* 111 */ this.scriptName = UScript.getName(s[0]);
/* */
/* 113 */ if (this.scriptName.equalsIgnoreCase(this.top)) {
/* 114 */ this.scriptName = null;
/* */ }
/* */ }
/* */
/* 118 */ this.isSpecLocale = false;
/* 119 */ this.res = null;
/* */
/* 121 */ if (script == -1) {
/* 122 */ Locale toploc = LocaleUtility.getLocaleFromName(this.top);
/* 123 */ this.res = ((ICUResourceBundle)UResourceBundle.getBundleInstance("com/ibm/icu/impl/data/icudt48b/translit", toploc));
/* */
/* 125 */ if ((this.res != null) && (LocaleUtility.isFallbackOf(this.res.getULocale().toString(), this.top))) {
/* 126 */ this.isSpecLocale = true;
/* */ }
/* */
/* */ }
/* */ }
/* */ catch (MissingResourceException e)
/* */ {
/* 133 */ this.scriptName = null;
/* */ }
/* */
/* */
/* 137 */ reset();
/* */ }
/* */
/* */ public boolean hasFallback() {
/* 141 */ return this.nextSpec != null;
/* */ }
/* */
/* */ public void reset() {
/* 145 */ if (this.spec != this.top) {
/* 146 */ this.spec = this.top;
/* 147 */ this.isSpecLocale = (this.res != null);
/* 148 */ setupNext();
/* */ }
/* */ }
/* */
/* */ private void setupNext() {
/* 153 */ this.isNextLocale = false;
/* 154 */ if (this.isSpecLocale) {
/* 155 */ this.nextSpec = this.spec;
/* 156 */ int i = this.nextSpec.lastIndexOf('_');
/* */
/* */
/* 159 */ if (i > 0) {
/* 160 */ this.nextSpec = this.spec.substring(0, i);
/* 161 */ this.isNextLocale = true;
/* */ } else {
/* 163 */ this.nextSpec = this.scriptName;
/* */ }
/* */
/* */ }
/* 167 */ else if (this.nextSpec != this.scriptName) {
/* 168 */ this.nextSpec = this.scriptName;
/* */ } else {
/* 170 */ this.nextSpec = null;
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ public String next()
/* */ {
/* 180 */ this.spec = this.nextSpec;
/* 181 */ this.isSpecLocale = this.isNextLocale;
/* 182 */ setupNext();
/* 183 */ return this.spec;
/* */ }
/* */
/* */ public String get() {
/* 187 */ return this.spec;
/* */ }
/* */
/* */ public boolean isLocale() {
/* 191 */ return this.isSpecLocale;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public ResourceBundle getBundle()
/* */ {
/* 202 */ if ((this.res != null) && (this.res.getULocale().toString().equals(this.spec)))
/* */ {
/* 204 */ return this.res;
/* */ }
/* 206 */ return null;
/* */ }
/* */
/* */ public String getTop() {
/* 210 */ return this.top;
/* */ }
/* */ }
/* */
/* */
/* */ static class ResourceEntry
/* */ {
/* */ public String resource;
/* */ public String encoding;
/* */ public int direction;
/* */
/* */ public ResourceEntry(String n, String enc, int d)
/* */ {
/* 223 */ this.resource = n;
/* 224 */ this.encoding = enc;
/* 225 */ this.direction = d;
/* */ }
/* */ }
/* */
/* */ static class LocaleEntry {
/* */ public String rule;
/* */ public int direction;
/* */
/* */ public LocaleEntry(String r, int d) {
/* 234 */ this.rule = r;
/* 235 */ this.direction = d;
/* */ }
/* */ }
/* */
/* */ static class AliasEntry {
/* */ public String alias;
/* */
/* 242 */ public AliasEntry(String a) { this.alias = a; }
/* */ }
/* */
/* */
/* */ static class CompoundRBTEntry
/* */ {
/* */ private String ID;
/* */ private List<String> idBlockVector;
/* */ private List<RuleBasedTransliterator.Data> dataVector;
/* */ private UnicodeSet compoundFilter;
/* */
/* */ public CompoundRBTEntry(String theID, List<String> theIDBlockVector, List<RuleBasedTransliterator.Data> theDataVector, UnicodeSet theCompoundFilter)
/* */ {
/* 255 */ this.ID = theID;
/* 256 */ this.idBlockVector = theIDBlockVector;
/* 257 */ this.dataVector = theDataVector;
/* 258 */ this.compoundFilter = theCompoundFilter;
/* */ }
/* */
/* */ public Transliterator getInstance() {
/* 262 */ List<Transliterator> transliterators = new ArrayList();
/* 263 */ int passNumber = 1;
/* */
/* 265 */ int limit = Math.max(this.idBlockVector.size(), this.dataVector.size());
/* 266 */ for (int i = 0; i < limit; i++) {
/* 267 */ if (i < this.idBlockVector.size()) {
/* 268 */ String idBlock = (String)this.idBlockVector.get(i);
/* 269 */ if (idBlock.length() > 0)
/* 270 */ transliterators.add(Transliterator.getInstance(idBlock));
/* */ }
/* 272 */ if (i < this.dataVector.size()) {
/* 273 */ RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)this.dataVector.get(i);
/* 274 */ transliterators.add(new RuleBasedTransliterator("%Pass" + passNumber++, data, null));
/* */ }
/* */ }
/* */
/* 278 */ Transliterator t = new CompoundTransliterator(transliterators, passNumber - 1);
/* 279 */ t.setID(this.ID);
/* 280 */ if (this.compoundFilter != null) {
/* 281 */ t.setFilter(this.compoundFilter);
/* */ }
/* 283 */ return t;
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */ public TransliteratorRegistry()
/* */ {
/* 292 */ this.registry = Collections.synchronizedMap(new HashMap());
/* 293 */ this.specDAG = Collections.synchronizedMap(new HashMap());
/* 294 */ this.availableIDs = new ArrayList();
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public Transliterator get(String ID, StringBuffer aliasReturn)
/* */ {
/* 309 */ Object[] entry = find(ID);
/* 310 */ return entry == null ? null : instantiateEntry(ID, entry, aliasReturn);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void put(String ID, Class<? extends Transliterator> transliteratorSubclass, boolean visible)
/* */ {
/* 322 */ registerEntry(ID, transliteratorSubclass, visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void put(String ID, Transliterator.Factory factory, boolean visible)
/* */ {
/* 333 */ registerEntry(ID, factory, visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void put(String ID, String resourceName, String encoding, int dir, boolean visible)
/* */ {
/* 346 */ registerEntry(ID, new ResourceEntry(resourceName, encoding, dir), visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void put(String ID, String alias, boolean visible)
/* */ {
/* 357 */ registerEntry(ID, new AliasEntry(alias), visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public void put(String ID, Transliterator trans, boolean visible)
/* */ {
/* 368 */ registerEntry(ID, trans, visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ public void remove(String ID)
/* */ {
/* 377 */ String[] stv = TransliteratorIDParser.IDtoSTV(ID);
/* */
/* 379 */ String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
/* 380 */ this.registry.remove(new CaseInsensitiveString(id));
/* 381 */ removeSTV(stv[0], stv[1], stv[2]);
/* 382 */ this.availableIDs.remove(new CaseInsensitiveString(id));
/* */ }
/* */
/* */
/* */
/* */
/* */ private static class IDEnumeration
/* */ implements Enumeration<String>
/* */ {
/* */ Enumeration<CaseInsensitiveString> en;
/* */
/* */
/* */
/* */ public IDEnumeration(Enumeration<CaseInsensitiveString> e)
/* */ {
/* 397 */ this.en = e;
/* */ }
/* */
/* */ public boolean hasMoreElements() {
/* 401 */ return (this.en != null) && (this.en.hasMoreElements());
/* */ }
/* */
/* */ public String nextElement() {
/* 405 */ return ((CaseInsensitiveString)this.en.nextElement()).getString();
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public Enumeration<String> getAvailableIDs()
/* */ {
/* 418 */ return new IDEnumeration(Collections.enumeration(this.availableIDs));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ public Enumeration<String> getAvailableSources()
/* */ {
/* 427 */ return new IDEnumeration(Collections.enumeration(this.specDAG.keySet()));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public Enumeration<String> getAvailableTargets(String source)
/* */ {
/* 437 */ CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
/* 438 */ Map<CaseInsensitiveString, List<CaseInsensitiveString>> targets = (Map)this.specDAG.get(cisrc);
/* 439 */ if (targets == null) {
/* 440 */ return new IDEnumeration(null);
/* */ }
/* 442 */ return new IDEnumeration(Collections.enumeration(targets.keySet()));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */ public Enumeration<String> getAvailableVariants(String source, String target)
/* */ {
/* 452 */ CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
/* 453 */ CaseInsensitiveString citrg = new CaseInsensitiveString(target);
/* 454 */ Map<CaseInsensitiveString, List<CaseInsensitiveString>> targets = (Map)this.specDAG.get(cisrc);
/* 455 */ if (targets == null) {
/* 456 */ return new IDEnumeration(null);
/* */ }
/* 458 */ List<CaseInsensitiveString> variants = (List)targets.get(citrg);
/* 459 */ if (variants == null) {
/* 460 */ return new IDEnumeration(null);
/* */ }
/* 462 */ return new IDEnumeration(Collections.enumeration(variants));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private void registerEntry(String source, String target, String variant, Object entry, boolean visible)
/* */ {
/* 477 */ String s = source;
/* 478 */ if (s.length() == 0) {
/* 479 */ s = "Any";
/* */ }
/* 481 */ String ID = TransliteratorIDParser.STVtoID(source, target, variant);
/* 482 */ registerEntry(ID, s, target, variant, entry, visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */ private void registerEntry(String ID, Object entry, boolean visible)
/* */ {
/* 491 */ String[] stv = TransliteratorIDParser.IDtoSTV(ID);
/* */
/* 493 */ String id = TransliteratorIDParser.STVtoID(stv[0], stv[1], stv[2]);
/* 494 */ registerEntry(id, stv[0], stv[1], stv[2], entry, visible);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private void registerEntry(String ID, String source, String target, String variant, Object entry, boolean visible)
/* */ {
/* 507 */ CaseInsensitiveString ciID = new CaseInsensitiveString(ID);
/* */
/* */ Object[] arrayOfObj;
/* */ Object[] arrayOfObj;
/* 511 */ if ((entry instanceof Object[])) {
/* 512 */ arrayOfObj = (Object[])entry;
/* */ } else {
/* 514 */ arrayOfObj = new Object[] { entry };
/* */ }
/* */
/* 517 */ this.registry.put(ciID, arrayOfObj);
/* 518 */ if (visible) {
/* 519 */ registerSTV(source, target, variant);
/* 520 */ if (!this.availableIDs.contains(ciID)) {
/* 521 */ this.availableIDs.add(ciID);
/* */ }
/* */ } else {
/* 524 */ removeSTV(source, target, variant);
/* 525 */ this.availableIDs.remove(ciID);
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private void registerSTV(String source, String target, String variant)
/* */ {
/* 540 */ CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
/* 541 */ CaseInsensitiveString citrg = new CaseInsensitiveString(target);
/* 542 */ CaseInsensitiveString civar = new CaseInsensitiveString(variant);
/* 543 */ Map<CaseInsensitiveString, List<CaseInsensitiveString>> targets = (Map)this.specDAG.get(cisrc);
/* 544 */ if (targets == null) {
/* 545 */ targets = Collections.synchronizedMap(new HashMap());
/* 546 */ this.specDAG.put(cisrc, targets);
/* */ }
/* 548 */ List<CaseInsensitiveString> variants = (List)targets.get(citrg);
/* 549 */ if (variants == null) {
/* 550 */ variants = new ArrayList();
/* 551 */ targets.put(citrg, variants);
/* */ }
/* */
/* */
/* */
/* 556 */ if (!variants.contains(civar)) {
/* 557 */ if (variant.length() > 0) {
/* 558 */ variants.add(civar);
/* */ } else {
/* 560 */ variants.add(0, civar);
/* */ }
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private void removeSTV(String source, String target, String variant)
/* */ {
/* 573 */ CaseInsensitiveString cisrc = new CaseInsensitiveString(source);
/* 574 */ CaseInsensitiveString citrg = new CaseInsensitiveString(target);
/* 575 */ CaseInsensitiveString civar = new CaseInsensitiveString(variant);
/* 576 */ Map<CaseInsensitiveString, List<CaseInsensitiveString>> targets = (Map)this.specDAG.get(cisrc);
/* 577 */ if (targets == null) {
/* 578 */ return;
/* */ }
/* 580 */ List<CaseInsensitiveString> variants = (List)targets.get(citrg);
/* 581 */ if (variants == null) {
/* 582 */ return;
/* */ }
/* 584 */ variants.remove(civar);
/* 585 */ if (variants.size() == 0) {
/* 586 */ targets.remove(citrg);
/* 587 */ if (targets.size() == 0) {
/* 588 */ this.specDAG.remove(cisrc);
/* */ }
/* */ }
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private Object[] findInDynamicStore(Spec src, Spec trg, String variant)
/* */ {
/* 602 */ String ID = TransliteratorIDParser.STVtoID(src.get(), trg.get(), variant);
/* */
/* */
/* */
/* */
/* */
/* */
/* 609 */ return (Object[])this.registry.get(new CaseInsensitiveString(ID));
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private Object[] findInStaticStore(Spec src, Spec trg, String variant)
/* */ {
/* 631 */ Object[] entry = null;
/* 632 */ if (src.isLocale()) {
/* 633 */ entry = findInBundle(src, trg, variant, 0);
/* 634 */ } else if (trg.isLocale()) {
/* 635 */ entry = findInBundle(trg, src, variant, 1);
/* */ }
/* */
/* */
/* */
/* 640 */ if (entry != null) {
/* 641 */ registerEntry(src.getTop(), trg.getTop(), variant, entry, false);
/* */ }
/* */
/* 644 */ return entry;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private Object[] findInBundle(Spec specToOpen, Spec specToFind, String variant, int direction)
/* */ {
/* 662 */ ResourceBundle res = specToOpen.getBundle();
/* */
/* 664 */ if (res == null)
/* */ {
/* */
/* 667 */ return null;
/* */ }
/* */
/* 670 */ for (int pass = 0; pass < 2; pass++) {
/* 671 */ StringBuilder tag = new StringBuilder();
/* */
/* */
/* */
/* */
/* 676 */ if (pass == 0) {
/* 677 */ tag.append(direction == 0 ? "TransliterateTo" : "TransliterateFrom");
/* */ }
/* */ else {
/* 680 */ tag.append("Transliterate");
/* */ }
/* 682 */ tag.append(specToFind.get().toUpperCase());
/* */
/* */
/* */
/* */ try
/* */ {
/* 688 */ String[] subres = res.getStringArray(tag.toString());
/* */
/* */
/* */
/* 692 */ int i = 0;
/* 693 */ if (variant.length() != 0) {
/* 694 */ for (i = 0; i < subres.length; i += 2) {
/* 695 */ if (subres[i].equalsIgnoreCase(variant)) {
/* */ break;
/* */ }
/* */ }
/* */ }
/* */
/* 701 */ if (i < subres.length)
/* */ {
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* 713 */ int dir = pass == 0 ? 0 : direction;
/* 714 */ return new Object[] { new LocaleEntry(subres[(i + 1)], dir) };
/* */ }
/* */ }
/* */ catch (MissingResourceException e) {}
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* 726 */ return null;
/* */ }
/* */
/* */
/* */
/* */ private Object[] find(String ID)
/* */ {
/* 733 */ String[] stv = TransliteratorIDParser.IDtoSTV(ID);
/* 734 */ return find(stv[0], stv[1], stv[2]);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private Object[] find(String source, String target, String variant)
/* */ {
/* 762 */ Spec src = new Spec(source);
/* 763 */ Spec trg = new Spec(target);
/* 764 */ Object[] entry = null;
/* */
/* 766 */ if (variant.length() != 0)
/* */ {
/* */
/* 769 */ entry = findInDynamicStore(src, trg, variant);
/* 770 */ if (entry != null) {
/* 771 */ return entry;
/* */ }
/* */
/* */
/* 775 */ entry = findInStaticStore(src, trg, variant);
/* 776 */ if (entry != null) {
/* 777 */ return entry;
/* */ }
/* */ }
/* */ for (;;)
/* */ {
/* 782 */ src.reset();
/* */ for (;;)
/* */ {
/* 785 */ entry = findInDynamicStore(src, trg, "");
/* 786 */ if (entry != null) {
/* 787 */ return entry;
/* */ }
/* */
/* */
/* 791 */ entry = findInStaticStore(src, trg, "");
/* 792 */ if (entry != null) {
/* 793 */ return entry;
/* */ }
/* 795 */ if (!src.hasFallback()) {
/* */ break;
/* */ }
/* 798 */ src.next();
/* */ }
/* 800 */ if (!trg.hasFallback()) {
/* */ break;
/* */ }
/* 803 */ trg.next();
/* */ }
/* */
/* 806 */ return null;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* */ private Transliterator instantiateEntry(String ID, Object[] entryWrapper, StringBuffer aliasReturn)
/* */ {
/* */ for (;;)
/* */ {
/* 834 */ Object entry = entryWrapper[0];
/* */
/* 836 */ if ((entry instanceof RuleBasedTransliterator.Data)) {
/* 837 */ RuleBasedTransliterator.Data data = (RuleBasedTransliterator.Data)entry;
/* 838 */ return new RuleBasedTransliterator(ID, data, null); }
/* 839 */ if ((entry instanceof Class)) {
/* */ try {
/* 841 */ return (Transliterator)((Class)entry).newInstance();
/* */ }
/* */ catch (InstantiationException e) {}catch (IllegalAccessException e2) {}
/* 844 */ return null; }
/* 845 */ if ((entry instanceof AliasEntry)) {
/* 846 */ aliasReturn.append(((AliasEntry)entry).alias);
/* 847 */ return null; }
/* 848 */ if ((entry instanceof Transliterator.Factory))
/* 849 */ return ((Transliterator.Factory)entry).getInstance(ID);
/* 850 */ if ((entry instanceof CompoundRBTEntry))
/* 851 */ return ((CompoundRBTEntry)entry).getInstance();
/* 852 */ if ((entry instanceof AnyTransliterator)) {
/* 853 */ AnyTransliterator temp = (AnyTransliterator)entry;
/* 854 */ return temp.safeClone(); }
/* 855 */ if ((entry instanceof RuleBasedTransliterator)) {
/* 856 */ RuleBasedTransliterator temp = (RuleBasedTransliterator)entry;
/* 857 */ return temp.safeClone(); }
/* 858 */ if ((entry instanceof CompoundTransliterator)) {
/* 859 */ CompoundTransliterator temp = (CompoundTransliterator)entry;
/* 860 */ return temp.safeClone(); }
/* 861 */ if ((entry instanceof Transliterator)) {
/* 862 */ return (Transliterator)entry;
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* */
/* 871 */ TransliteratorParser parser = new TransliteratorParser();
/* */
/* */ try
/* */ {
/* 875 */ ResourceEntry re = (ResourceEntry)entry;
/* 876 */ parser.parse(re.resource, re.direction);
/* */
/* */ }
/* */ catch (ClassCastException e)
/* */ {
/* 881 */ LocaleEntry le = (LocaleEntry)entry;
/* 882 */ parser.parse(le.rule, le.direction);
/* */ }
/* */
/* */
/* */
/* */
/* */
/* */
/* 890 */ if ((parser.idBlockVector.size() == 0) && (parser.dataVector.size() == 0))
/* */ {
/* */
/* 893 */ entryWrapper[0] = new AliasEntry(NullTransliterator._ID);
/* */ }
/* 895 */ else if ((parser.idBlockVector.size() == 0) && (parser.dataVector.size() == 1))
/* */ {
/* */
/* 898 */ entryWrapper[0] = parser.dataVector.get(0);
/* */ }
/* 900 */ else if ((parser.idBlockVector.size() == 1) && (parser.dataVector.size() == 0))
/* */ {
/* */
/* */
/* */
/* 905 */ if (parser.compoundFilter != null) {
/* 906 */ entryWrapper[0] = new AliasEntry(parser.compoundFilter.toPattern(false) + ";" + (String)parser.idBlockVector.get(0));
/* */ }
/* */ else {
/* 909 */ entryWrapper[0] = new AliasEntry((String)parser.idBlockVector.get(0));
/* */ }
/* */ }
/* */ else {
/* 913 */ entryWrapper[0] = new CompoundRBTEntry(ID, parser.idBlockVector, parser.dataVector, parser.compoundFilter);
/* */ }
/* */ }
/* */ }
/* */ }
/* Location: C:\Users\Ethan\Desktop\FontZip\FontTool\sfnttool.jar!\com\ibm\icu\text\TransliteratorRegistry.class
* Java compiler version: 5 (49.0)
* JD-Core Version: 0.7.1
*/