KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > lenya > lucene > html > Entities


1 /*
2  * Copyright 1999-2004 The Apache Software Foundation
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */

17
18 /* $Id: Entities.java 42598 2004-03-01 16:18:28Z gregor $ */
19
20 package org.apache.lenya.lucene.html;
21
22 import java.util.Hashtable JavaDoc;
23
24 public class Entities {
25     static final Hashtable JavaDoc decoder = new Hashtable JavaDoc(300);
26     static final String JavaDoc[] encoder = new String JavaDoc[0x100];
27
28     static {
29         add("&nbsp", 160);
30         add("&iexcl", 161);
31         add("&cent", 162);
32         add("&pound", 163);
33         add("&curren", 164);
34         add("&yen", 165);
35         add("&brvbar", 166);
36         add("&sect", 167);
37         add("&uml", 168);
38         add("&copy", 169);
39         add("&ordf", 170);
40         add("&laquo", 171);
41         add("&not", 172);
42         add("&shy", 173);
43         add("&reg", 174);
44         add("&macr", 175);
45         add("&deg", 176);
46         add("&plusmn", 177);
47         add("&sup2", 178);
48         add("&sup3", 179);
49         add("&acute", 180);
50         add("&micro", 181);
51         add("&para", 182);
52         add("&middot", 183);
53         add("&cedil", 184);
54         add("&sup1", 185);
55         add("&ordm", 186);
56         add("&raquo", 187);
57         add("&frac14", 188);
58         add("&frac12", 189);
59         add("&frac34", 190);
60         add("&iquest", 191);
61         add("&Agrave", 192);
62         add("&Aacute", 193);
63         add("&Acirc", 194);
64         add("&Atilde", 195);
65         add("&Auml", 196);
66         add("&Aring", 197);
67         add("&AElig", 198);
68         add("&Ccedil", 199);
69         add("&Egrave", 200);
70         add("&Eacute", 201);
71         add("&Ecirc", 202);
72         add("&Euml", 203);
73         add("&Igrave", 204);
74         add("&Iacute", 205);
75         add("&Icirc", 206);
76         add("&Iuml", 207);
77         add("&ETH", 208);
78         add("&Ntilde", 209);
79         add("&Ograve", 210);
80         add("&Oacute", 211);
81         add("&Ocirc", 212);
82         add("&Otilde", 213);
83         add("&Ouml", 214);
84         add("&times", 215);
85         add("&Oslash", 216);
86         add("&Ugrave", 217);
87         add("&Uacute", 218);
88         add("&Ucirc", 219);
89         add("&Uuml", 220);
90         add("&Yacute", 221);
91         add("&THORN", 222);
92         add("&szlig", 223);
93         add("&agrave", 224);
94         add("&aacute", 225);
95         add("&acirc", 226);
96         add("&atilde", 227);
97         add("&auml", 228);
98         add("&aring", 229);
99         add("&aelig", 230);
100         add("&ccedil", 231);
101         add("&egrave", 232);
102         add("&eacute", 233);
103         add("&ecirc", 234);
104         add("&euml", 235);
105         add("&igrave", 236);
106         add("&iacute", 237);
107         add("&icirc", 238);
108         add("&iuml", 239);
109         add("&eth", 240);
110         add("&ntilde", 241);
111         add("&ograve", 242);
112         add("&oacute", 243);
113         add("&ocirc", 244);
114         add("&otilde", 245);
115         add("&ouml", 246);
116         add("&divide", 247);
117         add("&oslash", 248);
118         add("&ugrave", 249);
119         add("&uacute", 250);
120         add("&ucirc", 251);
121         add("&uuml", 252);
122         add("&yacute", 253);
123         add("&thorn", 254);
124         add("&yuml", 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("&notin", 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("&quot", 34);
250         add("&amp", 38);
251         add("&lt", 60);
252         add("&gt", 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 JavaDoc decode(String JavaDoc entity) {
284         if (entity.charAt(entity.length() - 1) == ';') { // remove trailing semicolon
285
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 JavaDoc c = new Character JavaDoc((char) Integer.parseInt(entity.substring(start), radix));
298
299             return c.toString();
300         } else {
301             String JavaDoc s = (String JavaDoc) decoder.get(entity);
302
303             if (s != null) {
304                 return s;
305             } else {
306                 return "";
307             }
308         }
309     }
310
311     /**
312      * DOCUMENT ME!
313      *
314      * @param s DOCUMENT ME!
315      *
316      * @return DOCUMENT ME!
317      */

318     static final public String JavaDoc encode(String JavaDoc s) {
319         int length = s.length();
320         StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(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]); // have a named encoding
328
buffer.append(';');
329             } else if (j < 0x80) {
330                 buffer.append(c); // use ASCII value
331
} else {
332                 buffer.append("&#"); // use numeric encoding
333
buffer.append((int) c);
334                 buffer.append(';');
335             }
336         }
337
338         return buffer.toString();
339     }
340
341     static final void add(String JavaDoc entity, int value) {
342         decoder.put(entity, (new Character JavaDoc((char) value)).toString());
343
344         if (value < 0x100) {
345             encoder[value] = entity;
346         }
347     }
348 }
349
Popular Tags