VisClient/org/apache/lucene/demo/html/Entities.java

Go to the documentation of this file.
00001 package org.apache.lucene.demo.html;
00002 
00020 import java.util.HashMap;
00021 import java.util.Map;
00022 
00023 public class Entities {
00024   static final Map<String, String> decoder = new HashMap<String, String>(300);
00025   static final String[]  encoder = new String[0x100];
00026 
00027   public static final String decode(String entity) {
00028     if (entity.charAt(entity.length()-1) == ';')  // remove trailing semicolon
00029       entity = entity.substring(0, entity.length()-1);
00030     if (entity.charAt(1) == '#') {
00031       int start = 2;
00032       int radix = 10;
00033       if (entity.charAt(2) == 'X' || entity.charAt(2) == 'x') {
00034         start++;
00035         radix = 16;
00036       }
00037       Character c =
00038         new Character((char)Integer.parseInt(entity.substring(start), radix));
00039       return c.toString();
00040     } else {
00041       String s = (String)decoder.get(entity);
00042       if (s != null)
00043         return s;
00044       else return "";
00045     }
00046   }
00047 
00048   public static final String encode(String s) {
00049     int length = s.length();
00050     StringBuffer buffer = new StringBuffer(length * 2);
00051     for (int i = 0; i < length; i++) {
00052       char c = s.charAt(i);
00053       int j = (int)c;
00054       if (j < 0x100 && encoder[j] != null) {
00055         buffer.append(encoder[j]);                // have a named encoding
00056         buffer.append(';');
00057       } else if (j < 0x80) {
00058         buffer.append(c);                         // use ASCII value
00059       } else {
00060         buffer.append("&#");                      // use numeric encoding
00061         buffer.append((int)c);
00062         buffer.append(';');
00063       }
00064     }
00065     return buffer.toString();
00066   }
00067 
00068   static final void add(String entity, int value) {
00069     decoder.put(entity, (new Character((char)value)).toString());
00070     if (value < 0x100)
00071       encoder[value] = entity;
00072   }
00073 
00074   static {
00075     add("&nbsp",   160);
00076     add("&iexcl",  161);
00077     add("&cent",   162);
00078     add("&pound",  163);
00079     add("&curren", 164);
00080     add("&yen",    165);
00081     add("&brvbar", 166);
00082     add("&sect",   167);
00083     add("&uml",    168);
00084     add("&copy",   169);
00085     add("&ordf",   170);
00086     add("&laquo",  171);
00087     add("&not",    172);
00088     add("&shy",    173);
00089     add("&reg",    174);
00090     add("&macr",   175);
00091     add("&deg",    176);
00092     add("&plusmn", 177);
00093     add("&sup2",   178);
00094     add("&sup3",   179);
00095     add("&acute",  180);
00096     add("&micro",  181);
00097     add("&para",   182);
00098     add("&middot", 183);
00099     add("&cedil",  184);
00100     add("&sup1",   185);
00101     add("&ordm",   186);
00102     add("&raquo",  187);
00103     add("&frac14", 188);
00104     add("&frac12", 189);
00105     add("&frac34", 190);
00106     add("&iquest", 191);
00107     add("&Agrave", 192);
00108     add("&Aacute", 193);
00109     add("&Acirc",  194);
00110     add("&Atilde", 195);
00111     add("&Auml",   196);
00112     add("&Aring",  197);
00113     add("&AElig",  198);
00114     add("&Ccedil", 199);
00115     add("&Egrave", 200);
00116     add("&Eacute", 201);
00117     add("&Ecirc",  202);
00118     add("&Euml",   203);
00119     add("&Igrave", 204);
00120     add("&Iacute", 205);
00121     add("&Icirc",  206);
00122     add("&Iuml",   207);
00123     add("&ETH",    208);
00124     add("&Ntilde", 209);
00125     add("&Ograve", 210);
00126     add("&Oacute", 211);
00127     add("&Ocirc",  212);
00128     add("&Otilde", 213);
00129     add("&Ouml",   214);
00130     add("&times",  215);
00131     add("&Oslash", 216);
00132     add("&Ugrave", 217);
00133     add("&Uacute", 218);
00134     add("&Ucirc",  219);
00135     add("&Uuml",   220);
00136     add("&Yacute", 221);
00137     add("&THORN",  222);
00138     add("&szlig",  223);
00139     add("&agrave", 224);
00140     add("&aacute", 225);
00141     add("&acirc",  226);
00142     add("&atilde", 227);
00143     add("&auml",   228);
00144     add("&aring",  229);
00145     add("&aelig",  230);
00146     add("&ccedil", 231);
00147     add("&egrave", 232);
00148     add("&eacute", 233);
00149     add("&ecirc",  234);
00150     add("&euml",   235);
00151     add("&igrave", 236);
00152     add("&iacute", 237);
00153     add("&icirc",  238);
00154     add("&iuml",   239);
00155     add("&eth",    240);
00156     add("&ntilde", 241);
00157     add("&ograve", 242);
00158     add("&oacute", 243);
00159     add("&ocirc",  244);
00160     add("&otilde", 245);
00161     add("&ouml",   246);
00162     add("&divide", 247);
00163     add("&oslash", 248);
00164     add("&ugrave", 249);
00165     add("&uacute", 250);
00166     add("&ucirc",  251);
00167     add("&uuml",   252);
00168     add("&yacute", 253);
00169     add("&thorn",  254);
00170     add("&yuml",   255);
00171     add("&fnof",   402);
00172     add("&Alpha",  913);
00173     add("&Beta",   914);
00174     add("&Gamma",  915);
00175     add("&Delta",  916);
00176     add("&Epsilon",917);
00177     add("&Zeta",   918);
00178     add("&Eta",    919);
00179     add("&Theta",  920);
00180     add("&Iota",   921);
00181     add("&Kappa",  922);
00182     add("&Lambda", 923);
00183     add("&Mu",     924);
00184     add("&Nu",     925);
00185     add("&Xi",     926);
00186     add("&Omicron",927);
00187     add("&Pi",     928);
00188     add("&Rho",    929);
00189     add("&Sigma",  931);
00190     add("&Tau",    932);
00191     add("&Upsilon",933);
00192     add("&Phi",    934);
00193     add("&Chi",    935);
00194     add("&Psi",    936);
00195     add("&Omega",  937);
00196     add("&alpha",  945);
00197     add("&beta",   946);
00198     add("&gamma",  947);
00199     add("&delta",  948);
00200     add("&epsilon",949);
00201     add("&zeta",   950);
00202     add("&eta",    951);
00203     add("&theta",  952);
00204     add("&iota",   953);
00205     add("&kappa",  954);
00206     add("&lambda", 955);
00207     add("&mu",     956);
00208     add("&nu",     957);
00209     add("&xi",     958);
00210     add("&omicron",959);
00211     add("&pi",     960);
00212     add("&rho",    961);
00213     add("&sigmaf", 962);
00214     add("&sigma",  963);
00215     add("&tau",    964);
00216     add("&upsilon",965);
00217     add("&phi",    966);
00218     add("&chi",    967);
00219     add("&psi",    968);
00220     add("&omega",  969);
00221     add("&thetasym",977);
00222     add("&upsih",  978);
00223     add("&piv",    982);
00224     add("&bull",   8226);
00225     add("&hellip", 8230);
00226     add("&prime",  8242);
00227     add("&Prime",  8243);
00228     add("&oline",  8254);
00229     add("&frasl",  8260);
00230     add("&weierp", 8472);
00231     add("&image",  8465);
00232     add("&real",   8476);
00233     add("&trade",  8482);
00234     add("&alefsym",8501);
00235     add("&larr",   8592);
00236     add("&uarr",   8593);
00237     add("&rarr",   8594);
00238     add("&darr",   8595);
00239     add("&harr",   8596);
00240     add("&crarr",  8629);
00241     add("&lArr",   8656);
00242     add("&uArr",   8657);
00243     add("&rArr",   8658);
00244     add("&dArr",   8659);
00245     add("&hArr",   8660);
00246     add("&forall", 8704);
00247     add("&part",   8706);
00248     add("&exist",  8707);
00249     add("&empty",  8709);
00250     add("&nabla",  8711);
00251     add("&isin",   8712);
00252     add("&notin",  8713);
00253     add("&ni",     8715);
00254     add("&prod",   8719);
00255     add("&sum",    8721);
00256     add("&minus",  8722);
00257     add("&lowast", 8727);
00258     add("&radic",  8730);
00259     add("&prop",   8733);
00260     add("&infin",  8734);
00261     add("&ang",    8736);
00262     add("&and",    8743);
00263     add("&or",     8744);
00264     add("&cap",    8745);
00265     add("&cup",    8746);
00266     add("&int",    8747);
00267     add("&there4", 8756);
00268     add("&sim",    8764);
00269     add("&cong",   8773);
00270     add("&asymp",  8776);
00271     add("&ne",     8800);
00272     add("&equiv",  8801);
00273     add("&le",     8804);
00274     add("&ge",     8805);
00275     add("&sub",    8834);
00276     add("&sup",    8835);
00277     add("&nsub",   8836);
00278     add("&sube",   8838);
00279     add("&supe",   8839);
00280     add("&oplus",  8853);
00281     add("&otimes", 8855);
00282     add("&perp",   8869);
00283     add("&sdot",   8901);
00284     add("&lceil",  8968);
00285     add("&rceil",  8969);
00286     add("&lfloor", 8970);
00287     add("&rfloor", 8971);
00288     add("&lang",   9001);
00289     add("&rang",   9002);
00290     add("&loz",    9674);
00291     add("&spades", 9824);
00292     add("&clubs",  9827);
00293     add("&hearts", 9829);
00294     add("&diams",  9830);
00295     add("&quot",   34);
00296     add("&amp",    38);
00297     add("&lt",     60);
00298     add("&gt",     62);
00299     add("&OElig",  338);
00300     add("&oelig",  339);
00301     add("&Scaron", 352);
00302     add("&scaron", 353);
00303     add("&Yuml",   376);
00304     add("&circ",   710);
00305     add("&tilde",  732);
00306     add("&ensp",   8194);
00307     add("&emsp",   8195);
00308     add("&thinsp", 8201);
00309     add("&zwnj",   8204);
00310     add("&zwj",    8205);
00311     add("&lrm",    8206);
00312     add("&rlm",    8207);
00313     add("&ndash",  8211);
00314     add("&mdash",  8212);
00315     add("&lsquo",  8216);
00316     add("&rsquo",  8217);
00317     add("&sbquo",  8218);
00318     add("&ldquo",  8220);
00319     add("&rdquo",  8221);
00320     add("&bdquo",  8222);
00321     add("&dagger", 8224);
00322     add("&Dagger", 8225);
00323     add("&permil", 8240);
00324     add("&lsaquo", 8249);
00325     add("&rsaquo", 8250);
00326     add("&euro",   8364);
00327 
00328   }
00329 }

Generated on Tue Apr 7 17:57:19 2009 for visclient by  doxygen 1.5.1