KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > nutch > html > Entities


1 /* Copyright (c) 2003 The Nutch Organization. All rights reserved. */
2 /* Use subject to the conditions in http://www.nutch.org/LICENSE.txt. */
3
4 package net.nutch.html;
5
6 import java.util.*;
7
8 public class Entities {
9   static final Hashtable decoder = new Hashtable(300);
10   static final String JavaDoc[] encoder = new String JavaDoc[0x100];
11
12   static final String JavaDoc decode(String JavaDoc entity) {
13     if (entity.charAt(entity.length()-1) == ';') // remove trailing semicolon
14
entity = entity.substring(0, entity.length()-1);
15     if (entity.charAt(1) == '#') {
16       int start = 2;
17       int radix = 10;
18       if (entity.charAt(2) == 'X' || entity.charAt(2) == 'x') {
19     start++;
20     radix = 16;
21       }
22       Character JavaDoc c =
23     new Character JavaDoc((char)Integer.parseInt(entity.substring(start), radix));
24       return c.toString();
25     } else {
26       String JavaDoc s = (String JavaDoc)decoder.get(entity);
27       if (s != null)
28     return s;
29       else return "";
30     }
31   }
32
33   static final public String JavaDoc encode(String JavaDoc s) {
34     int length = s.length();
35     StringBuffer JavaDoc buffer = new StringBuffer JavaDoc(length * 2);
36     for (int i = 0; i < length; i++) {
37       char c = s.charAt(i);
38       int j = (int)c;
39       if (j < 0x100 && encoder[j] != null) {
40     buffer.append(encoder[j]); // have a named encoding
41
buffer.append(';');
42       } else if (j < 0x80) {
43     buffer.append(c); // use ASCII value
44
} else {
45     buffer.append("&#"); // use numeric encoding
46
buffer.append((int)c);
47     buffer.append(';');
48       }
49     }
50     return buffer.toString();
51   }
52
53   static final void add(String JavaDoc entity, int value) {
54     decoder.put(entity, (new Character JavaDoc((char)value)).toString());
55     if (value < 0x100)
56       encoder[value] = entity;
57   }
58
59   static {
60     add("&nbsp", 160);
61     add("&iexcl", 161);
62     add("&cent", 162);
63     add("&pound", 163);
64     add("&curren", 164);
65     add("&yen", 165);
66     add("&brvbar", 166);
67     add("&sect", 167);
68     add("&uml", 168);
69     add("&copy", 169);
70     add("&ordf", 170);
71     add("&laquo", 171);
72     add("&not", 172);
73     add("&shy", 173);
74     add("&reg", 174);
75     add("&macr", 175);
76     add("&deg", 176);
77     add("&plusmn", 177);
78     add("&sup2", 178);
79     add("&sup3", 179);
80     add("&acute", 180);
81     add("&micro", 181);
82     add("&para", 182);
83     add("&middot", 183);
84     add("&cedil", 184);
85     add("&sup1", 185);
86     add("&ordm", 186);
87     add("&raquo", 187);
88     add("&frac14", 188);
89     add("&frac12", 189);
90     add("&frac34", 190);
91     add("&iquest", 191);
92     add("&Agrave", 192);
93     add("&Aacute", 193);
94     add("&Acirc", 194);
95     add("&Atilde", 195);
96     add("&Auml", 196);
97     add("&Aring", 197);
98     add("&AElig", 198);
99     add("&Ccedil", 199);
100     add("&Egrave", 200);
101     add("&Eacute", 201);
102     add("&Ecirc", 202);
103     add("&Euml", 203);
104     add("&Igrave", 204);
105     add("&Iacute", 205);
106     add("&Icirc", 206);
107     add("&Iuml", 207);
108     add("&ETH", 208);
109     add("&Ntilde", 209);
110     add("&Ograve", 210);
111     add("&Oacute", 211);
112     add("&Ocirc", 212);
113     add("&Otilde", 213);
114     add("&Ouml", 214);
115     add("&times", 215);
116     add("&Oslash", 216);
117     add("&Ugrave", 217);
118     add("&Uacute", 218);
119     add("&Ucirc", 219);
120     add("&Uuml", 220);
121     add("&Yacute", 221);
122     add("&THORN", 222);
123     add("&szlig", 223);
124     add("&agrave", 224);
125     add("&aacute", 225);
126     add("&acirc", 226);
127     add("&atilde", 227);
128     add("&auml", 228);
129     add("&aring", 229);
130     add("&aelig", 230);
131     add("&ccedil", 231);
132     add("&egrave", 232);
133     add("&eacute", 233);
134     add("&ecirc", 234);
135     add("&euml", 235);
136     add("&igrave", 236);
137     add("&iacute", 237);
138     add("&icirc", 238);
139     add("&iuml", 239);
140     add("&eth", 240);
141     add("&ntilde", 241);
142     add("&ograve", 242);
143     add("&oacute", 243);
144     add("&ocirc", 244);
145     add("&otilde", 245);
146     add("&ouml", 246);
147     add("&divide", 247);
148     add("&oslash", 248);
149     add("&ugrave", 249);
150     add("&uacute", 250);
151     add("&ucirc", 251);
152     add("&uuml", 252);
153     add("&yacute", 253);
154     add("&thorn", 254);
155     add("&yuml", 255);
156     add("&fnof", 402);
157     add("&Alpha", 913);
158     add("&Beta", 914);
159     add("&Gamma", 915);
160     add("&Delta", 916);
161     add("&Epsilon",917);
162     add("&Zeta", 918);
163     add("&Eta", 919);
164     add("&Theta", 920);
165     add("&Iota", 921);
166     add("&Kappa", 922);
167     add("&Lambda", 923);
168     add("&Mu", 924);
169     add("&Nu", 925);
170     add("&Xi", 926);
171     add("&Omicron",927);
172     add("&Pi", 928);
173     add("&Rho", 929);
174     add("&Sigma", 931);
175     add("&Tau", 932);
176     add("&Upsilon",933);
177     add("&Phi", 934);
178     add("&Chi", 935);
179     add("&Psi", 936);
180     add("&Omega", 937);
181     add("&alpha", 945);
182     add("&beta", 946);
183     add("&gamma", 947);
184     add("&delta", 948);
185     add("&epsilon",949);
186     add("&zeta", 950);
187     add("&eta", 951);
188     add("&theta", 952);
189     add("&iota", 953);
190     add("&kappa", 954);
191     add("&lambda", 955);
192     add("&mu", 956);
193     add("&nu", 957);
194     add("&xi", 958);
195     add("&omicron",959);
196     add("&pi", 960);
197     add("&rho", 961);
198     add("&sigmaf", 962);
199     add("&sigma", 963);
200     add("&tau", 964);
201     add("&upsilon",965);
202     add("&phi", 966);
203     add("&chi", 967);
204     add("&psi", 968);
205     add("&omega", 969);
206     add("&thetasym",977);
207     add("&upsih", 978);
208     add("&piv", 982);
209     add("&bull", 8226);
210     add("&hellip", 8230);
211     add("&prime", 8242);
212     add("&Prime", 8243);
213     add("&oline", 8254);
214     add("&frasl", 8260);
215     add("&weierp", 8472);
216     add("&image", 8465);
217     add("&real", 8476);
218     add("&trade", 8482);
219     add("&alefsym",8501);
220     add("&larr", 8592);
221     add("&uarr", 8593);
222     add("&rarr", 8594);
223     add("&darr", 8595);
224     add("&harr", 8596);
225     add("&crarr", 8629);
226     add("&lArr", 8656);
227     add("&uArr", 8657);
228     add("&rArr", 8658);
229     add("&dArr", 8659);
230     add("&hArr", 8660);
231     add("&forall", 8704);
232     add("&part", 8706);
233     add("&exist", 8707);
234     add("&empty", 8709);
235     add("&nabla", 8711);
236     add("&isin", 8712);
237     add("&notin", 8713);
238     add("&ni", 8715);
239     add("&prod", 8719);
240     add("&sum", 8721);
241     add("&minus", 8722);
242     add("&lowast", 8727);
243     add("&radic", 8730);
244     add("&prop", 8733);
245     add("&infin", 8734);
246     add("&ang", 8736);
247     add("&and", 8743);
248     add("&or", 8744);
249     add("&cap", 8745);
250     add("&cup", 8746);
251     add("&int", 8747);
252     add("&there4", 8756);
253     add("&sim", 8764);
254     add("&cong", 8773);
255     add("&asymp", 8776);
256     add("&ne", 8800);
257     add("&equiv", 8801);
258     add("&le", 8804);
259     add("&ge", 8805);
260     add("&sub", 8834);
261     add("&sup", 8835);
262     add("&nsub", 8836);
263     add("&sube", 8838);
264     add("&supe", 8839);
265     add("&oplus", 8853);
266     add("&otimes", 8855);
267     add("&perp", 8869);
268     add("&sdot", 8901);
269     add("&lceil", 8968);
270     add("&rceil", 8969);
271     add("&lfloor", 8970);
272     add("&rfloor", 8971);
273     add("&lang", 9001);
274     add("&rang", 9002);
275     add("&loz", 9674);
276     add("&spades", 9824);
277     add("&clubs", 9827);
278     add("&hearts", 9829);
279     add("&diams", 9830);
280     add("&quot", 34);
281     add("&amp", 38);
282     add("&lt", 60);
283     add("&gt", 62);
284     add("&OElig", 338);
285     add("&oelig", 339);
286     add("&Scaron", 352);
287     add("&scaron", 353);
288     add("&Yuml", 376);
289     add("&circ", 710);
290     add("&tilde", 732);
291     add("&ensp", 8194);
292     add("&emsp", 8195);
293     add("&thinsp", 8201);
294     add("&zwnj", 8204);
295     add("&zwj", 8205);
296     add("&lrm", 8206);
297     add("&rlm", 8207);
298     add("&ndash", 8211);
299     add("&mdash", 8212);
300     add("&lsquo", 8216);
301     add("&rsquo", 8217);
302     add("&sbquo", 8218);
303     add("&ldquo", 8220);
304     add("&rdquo", 8221);
305     add("&bdquo", 8222);
306     add("&dagger", 8224);
307     add("&Dagger", 8225);
308     add("&permil", 8240);
309     add("&lsaquo", 8249);
310     add("&rsaquo", 8250);
311     add("&euro", 8364);
312
313   }
314 }
315
Popular Tags