1 17 18 19 20 package org.apache.lenya.lucene.html; 21 22 import java.util.Hashtable ; 23 24 public class Entities { 25 static final Hashtable decoder = new Hashtable (300); 26 static final String [] encoder = new String [0x100]; 27 28 static { 29 add(" ", 160); 30 add("¡", 161); 31 add("¢", 162); 32 add("£", 163); 33 add("¤", 164); 34 add("¥", 165); 35 add("¦", 166); 36 add("§", 167); 37 add("¨", 168); 38 add("©", 169); 39 add("ª", 170); 40 add("«", 171); 41 add("¬", 172); 42 add("­", 173); 43 add("®", 174); 44 add("¯", 175); 45 add("°", 176); 46 add("±", 177); 47 add("²", 178); 48 add("³", 179); 49 add("´", 180); 50 add("µ", 181); 51 add("¶", 182); 52 add("·", 183); 53 add("¸", 184); 54 add("¹", 185); 55 add("º", 186); 56 add("»", 187); 57 add("¼", 188); 58 add("½", 189); 59 add("¾", 190); 60 add("¿", 191); 61 add("À", 192); 62 add("Á", 193); 63 add("Â", 194); 64 add("Ã", 195); 65 add("Ä", 196); 66 add("Å", 197); 67 add("Æ", 198); 68 add("Ç", 199); 69 add("È", 200); 70 add("É", 201); 71 add("Ê", 202); 72 add("Ë", 203); 73 add("Ì", 204); 74 add("Í", 205); 75 add("Î", 206); 76 add("Ï", 207); 77 add("Ð", 208); 78 add("Ñ", 209); 79 add("Ò", 210); 80 add("Ó", 211); 81 add("Ô", 212); 82 add("Õ", 213); 83 add("Ö", 214); 84 add("×", 215); 85 add("Ø", 216); 86 add("Ù", 217); 87 add("Ú", 218); 88 add("Û", 219); 89 add("Ü", 220); 90 add("Ý", 221); 91 add("Þ", 222); 92 add("ß", 223); 93 add("à", 224); 94 add("á", 225); 95 add("â", 226); 96 add("ã", 227); 97 add("ä", 228); 98 add("å", 229); 99 add("æ", 230); 100 add("ç", 231); 101 add("è", 232); 102 add("é", 233); 103 add("ê", 234); 104 add("ë", 235); 105 add("ì", 236); 106 add("í", 237); 107 add("î", 238); 108 add("ï", 239); 109 add("ð", 240); 110 add("ñ", 241); 111 add("ò", 242); 112 add("ó", 243); 113 add("ô", 244); 114 add("õ", 245); 115 add("ö", 246); 116 add("÷", 247); 117 add("ø", 248); 118 add("ù", 249); 119 add("ú", 250); 120 add("û", 251); 121 add("ü", 252); 122 add("ý", 253); 123 add("þ", 254); 124 add("ÿ", 255); 125 add("&fnof", 402); 126 add("&Alpha", 913); 127 add("&Beta", 914); 128 add("&Gamma", 915); 129 add("&Delta", 916); 130 add("&Epsilon", 917); 131 add("&Zeta", 918); 132 add("&Eta", 919); 133 add("&Theta", 920); 134 add("&Iota", 921); 135 add("&Kappa", 922); 136 add("&Lambda", 923); 137 add("&Mu", 924); 138 add("&Nu", 925); 139 add("&Xi", 926); 140 add("&Omicron", 927); 141 add("&Pi", 928); 142 add("&Rho", 929); 143 add("&Sigma", 931); 144 add("&Tau", 932); 145 add("&Upsilon", 933); 146 add("&Phi", 934); 147 add("&Chi", 935); 148 add("&Psi", 936); 149 add("&Omega", 937); 150 add("&alpha", 945); 151 add("&beta", 946); 152 add("&gamma", 947); 153 add("&delta", 948); 154 add("&epsilon", 949); 155 add("&zeta", 950); 156 add("&eta", 951); 157 add("&theta", 952); 158 add("&iota", 953); 159 add("&kappa", 954); 160 add("&lambda", 955); 161 add("&mu", 956); 162 add("&nu", 957); 163 add("&xi", 958); 164 add("&omicron", 959); 165 add("&pi", 960); 166 add("&rho", 961); 167 add("&sigmaf", 962); 168 add("&sigma", 963); 169 add("&tau", 964); 170 add("&upsilon", 965); 171 add("&phi", 966); 172 add("&chi", 967); 173 add("&psi", 968); 174 add("&omega", 969); 175 add("&thetasym", 977); 176 add("&upsih", 978); 177 add("&piv", 982); 178 add("&bull", 8226); 179 add("&hellip", 8230); 180 add("&prime", 8242); 181 add("&Prime", 8243); 182 add("&oline", 8254); 183 add("&frasl", 8260); 184 add("&weierp", 8472); 185 add("&image", 8465); 186 add("&real", 8476); 187 add("&trade", 8482); 188 add("&alefsym", 8501); 189 add("&larr", 8592); 190 add("&uarr", 8593); 191 add("&rarr", 8594); 192 add("&darr", 8595); 193 add("&harr", 8596); 194 add("&crarr", 8629); 195 add("&lArr", 8656); 196 add("&uArr", 8657); 197 add("&rArr", 8658); 198 add("&dArr", 8659); 199 add("&hArr", 8660); 200 add("&forall", 8704); 201 add("&part", 8706); 202 add("&exist", 8707); 203 add("&empty", 8709); 204 add("&nabla", 8711); 205 add("&isin", 8712); 206 add("¬in", 8713); 207 add("&ni", 8715); 208 add("&prod", 8719); 209 add("&sum", 8721); 210 add("&minus", 8722); 211 add("&lowast", 8727); 212 add("&radic", 8730); 213 add("&prop", 8733); 214 add("&infin", 8734); 215 add("&ang", 8736); 216 add("&and", 8743); 217 add("&or", 8744); 218 add("&cap", 8745); 219 add("&cup", 8746); 220 add("&int", 8747); 221 add("&there4", 8756); 222 add("&sim", 8764); 223 add("&cong", 8773); 224 add("&asymp", 8776); 225 add("&ne", 8800); 226 add("&equiv", 8801); 227 add("&le", 8804); 228 add("&ge", 8805); 229 add("&sub", 8834); 230 add("&sup", 8835); 231 add("&nsub", 8836); 232 add("&sube", 8838); 233 add("&supe", 8839); 234 add("&oplus", 8853); 235 add("&otimes", 8855); 236 add("&perp", 8869); 237 add("&sdot", 8901); 238 add("&lceil", 8968); 239 add("&rceil", 8969); 240 add("&lfloor", 8970); 241 add("&rfloor", 8971); 242 add("&lang", 9001); 243 add("&rang", 9002); 244 add("&loz", 9674); 245 add("&spades", 9824); 246 add("&clubs", 9827); 247 add("&hearts", 9829); 248 add("&diams", 9830); 249 add(""", 34); 250 add("&", 38); 251 add("<", 60); 252 add(">", 62); 253 add("&OElig", 338); 254 add("&oelig", 339); 255 add("&Scaron", 352); 256 add("&scaron", 353); 257 add("&Yuml", 376); 258 add("&circ", 710); 259 add("&tilde", 732); 260 add("&ensp", 8194); 261 add("&emsp", 8195); 262 add("&thinsp", 8201); 263 add("&zwnj", 8204); 264 add("&zwj", 8205); 265 add("&lrm", 8206); 266 add("&rlm", 8207); 267 add("&ndash", 8211); 268 add("&mdash", 8212); 269 add("&lsquo", 8216); 270 add("&rsquo", 8217); 271 add("&sbquo", 8218); 272 add("&ldquo", 8220); 273 add("&rdquo", 8221); 274 add("&bdquo", 8222); 275 add("&dagger", 8224); 276 add("&Dagger", 8225); 277 add("&permil", 8240); 278 add("&lsaquo", 8249); 279 add("&rsaquo", 8250); 280 add("&euro", 8364); 281 } 282 283 static final String decode(String entity) { 284 if (entity.charAt(entity.length() - 1) == ';') { entity = entity.substring(0, entity.length() - 1); 286 } 287 288 if (entity.charAt(1) == '#') { 289 int start = 2; 290 int radix = 10; 291 292 if ((entity.charAt(2) == 'X') || (entity.charAt(2) == 'x')) { 293 start++; 294 radix = 16; 295 } 296 297 Character c = new Character ((char) Integer.parseInt(entity.substring(start), radix)); 298 299 return c.toString(); 300 } else { 301 String s = (String ) decoder.get(entity); 302 303 if (s != null) { 304 return s; 305 } else { 306 return ""; 307 } 308 } 309 } 310 311 318 static final public String encode(String s) { 319 int length = s.length(); 320 StringBuffer buffer = new StringBuffer (length * 2); 321 322 for (int i = 0; i < length; i++) { 323 char c = s.charAt(i); 324 int j = c; 325 326 if ((j < 0x100) && (encoder[j] != null)) { 327 buffer.append(encoder[j]); buffer.append(';'); 329 } else if (j < 0x80) { 330 buffer.append(c); } else { 332 buffer.append("&#"); buffer.append((int) c); 334 buffer.append(';'); 335 } 336 } 337 338 return buffer.toString(); 339 } 340 341 static final void add(String entity, int value) { 342 decoder.put(entity, (new Character ((char) value)).toString()); 343 344 if (value < 0x100) { 345 encoder[value] = entity; 346 } 347 } 348 } 349 | Popular Tags |