KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jcorporate > expresso > ext > report > DocBookFilterWriter


1 /* ====================================================================
2  * The Jcorporate Apache Style Software License, Version 1.2 05-07-2002
3  *
4  * Copyright (c) 1995-2002 Jcorporate Ltd. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  *
10  * 1. Redistributions of source code must retain the above copyright
11  * notice, this list of conditions and the following disclaimer.
12  *
13  * 2. Redistributions in binary form must reproduce the above copyright
14  * notice, this list of conditions and the following disclaimer in
15  * the documentation and/or other materials provided with the
16  * distribution.
17  *
18  * 3. The end-user documentation included with the redistribution,
19  * if any, must include the following acknowledgment:
20  * "This product includes software developed by Jcorporate Ltd.
21  * (http://www.jcorporate.com/)."
22  * Alternately, this acknowledgment may appear in the software itself,
23  * if and wherever such third-party acknowledgments normally appear.
24  *
25  * 4. "Jcorporate" and product names such as "Expresso" must
26  * not be used to endorse or promote products derived from this
27  * software without prior written permission. For written permission,
28  * please contact info@jcorporate.com.
29  *
30  * 5. Products derived from this software may not be called "Expresso",
31  * or other Jcorporate product names; nor may "Expresso" or other
32  * Jcorporate product names appear in their name, without prior
33  * written permission of Jcorporate Ltd.
34  *
35  * 6. No product derived from this software may compete in the same
36  * market space, i.e. framework, without prior written permission
37  * of Jcorporate Ltd. For written permission, please contact
38  * partners@jcorporate.com.
39  *
40  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
41  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
42  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
43  * DISCLAIMED. IN NO EVENT SHALL JCORPORATE LTD OR ITS CONTRIBUTORS
44  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
45  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
46  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
47  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
48  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
49  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
50  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51  * SUCH DAMAGE.
52  * ====================================================================
53  *
54  * This software consists of voluntary contributions made by many
55  * individuals on behalf of the Jcorporate Ltd. Contributions back
56  * to the project(s) are encouraged when you make modifications.
57  * Please send them to support@jcorporate.com. For more information
58  * on Jcorporate Ltd. and its products, please see
59  * <http://www.jcorporate.com/>.
60  *
61  * Portions of this software are based upon other open source
62  * products and are subject to their respective licenses.
63  */

64
65 package com.jcorporate.expresso.ext.report;
66
67
68 import java.io.FilterWriter JavaDoc;
69 import java.io.IOException JavaDoc;
70 import java.io.Writer JavaDoc;
71 import java.util.ArrayList JavaDoc;
72
73 /**
74  * A FilterWriter that understands the docbook entities and converts them from
75  * their character codes. This class is not threadsafe within a single instance
76  * and care should be taken.
77  *
78  * @author David Lloyd
79  */

80
81 public class DocBookFilterWriter extends FilterWriter JavaDoc {
82
83     /**
84      * The buffer holding characters read after an amperstand that may be an entity.
85      */

86     private char[] buffer = new char[32];
87     private int bufferLen = 0;
88
89     /**
90      * Map entity to character code
91      */

92     private static ArrayList JavaDoc entities = null;
93
94     static {
95         loadEntities();
96     }
97
98     /**
99      * Create the writer on a stream.
100      *
101      * @param in The underlying output stream.
102      */

103     public DocBookFilterWriter(Writer JavaDoc in) {
104         super(in);
105     }
106
107     /**
108      * Override from Writer.
109      */

110     public void close() throws IOException JavaDoc {
111         out.write(buffer, 0, bufferLen);
112         bufferLen = 0;
113         out.close();
114     }
115
116     /**
117      * Override from Writer.
118      */

119     public void write(int c) throws IOException JavaDoc {
120         if (bufferLen > 0) {
121             if ((bufferLen == 1 && c == '#') ||
122                     (bufferLen == 2 && c == 'x') ||
123                     (bufferLen > 2 && bufferLen < buffer.length && Character.isDigit((char) c))) {
124                 buffer[bufferLen++] = (char) c;
125                 return;
126             } else if (c == ';') {
127                 if (bufferLen > 3 &&
128                         buffer[0] == '&' &&
129                         buffer[1] == '#') {
130                     int d = 0;
131                     try {
132                         if (buffer[2] == 'x') {
133                             d = Integer.parseInt(new String JavaDoc(buffer, 3, bufferLen - 3), 16);
134                         } else {
135                             d = Integer.parseInt(new String JavaDoc(buffer, 2, bufferLen - 2), 16);
136                         }
137
138                         String JavaDoc entity = lookupEntity(d);
139                         if (entity != null) {
140                             bufferLen = 0;
141                             out.write(entity);
142                             return;
143                         }
144                     } catch (Throwable JavaDoc t) {
145                     }
146                 }
147                 out.write(buffer, 0, bufferLen);
148                 bufferLen = 0;
149                 return;
150             } else {
151                 out.write(buffer, 0, bufferLen);
152                 bufferLen = 0;
153             }
154         }
155         if (c == '&') {
156             buffer[bufferLen++] = (char) c;
157         } else if (c < 32 || c > 126) {
158             String JavaDoc entity = lookupEntity(c);
159             if (entity != null) {
160                 out.write(entity);
161                 return;
162             }
163             out.write(c);
164         } else {
165             out.write(c);
166         }
167     }
168
169     public void write(char[] buf, int off, int len) throws IOException JavaDoc {
170         while (len-- > 0) {
171             write(buf[off++]);
172         }
173     }
174
175     public void write(char[] buf) throws IOException JavaDoc {
176         write(buf, 0, buf.length);
177     }
178
179     public void write(String JavaDoc s, int off, int len) throws IOException JavaDoc {
180         write(s.toCharArray(), off, len);
181     }
182
183     public void write(String JavaDoc s) throws IOException JavaDoc {
184         write(s.toCharArray());
185     }
186
187     /**
188      * Lookup the entity.
189      *
190      * @param ch The char we wish to find.
191      * @return The entity found.
192      */

193     private String JavaDoc lookupEntity(int ch) {
194         if (ch >= 0 && ch < entities.size()) {
195             return (String JavaDoc) entities.get(ch);
196         }
197         return null;
198     }
199
200     private static void loadEntities() {
201         entities = new ArrayList JavaDoc(java.util.Arrays.asList(new Object JavaDoc[0xFFFE]));
202
203         entities.set(0x2003, "&emsp;");
204         entities.set(0x2002, "&ensp;");
205         entities.set(0x2004, "&emsp13;");
206         entities.set(0x2005, "&emsp14;");
207         entities.set(0x2007, "&numsp;");
208         entities.set(0x2008, "&puncsp;");
209         entities.set(0x2009, "&thinsp;");
210         entities.set(0x200A, "&hairsp;");
211         entities.set(0x2014, "&mdash;");
212         entities.set(0x2013, "&ndash;");
213         entities.set(0x2010, "&dash;");
214         entities.set(0x2423, "&blank;");
215         entities.set(0x2026, "&hellip;");
216         entities.set(0x2025, "&nldr;");
217         entities.set(0x2153, "&frac13;");
218         entities.set(0x2154, "&frac23;");
219         entities.set(0x2155, "&frac15;");
220         entities.set(0x2156, "&frac25;");
221         entities.set(0x2157, "&frac35;");
222         entities.set(0x2158, "&frac45;");
223         entities.set(0x2159, "&frac16;");
224         entities.set(0x215A, "&frac56;");
225         entities.set(0x2105, "&incare;");
226         entities.set(0x2588, "&block;");
227         entities.set(0x2580, "&uhblk;");
228         entities.set(0x2584, "&lhblk;");
229         entities.set(0x2591, "&blk14;");
230         entities.set(0x2592, "&blk12;");
231         entities.set(0x2593, "&blk34;");
232         entities.set(0x25AE, "&marker;");
233         entities.set(0x25CB, "&cir;");
234         entities.set(0x25A1, "&squ;");
235         entities.set(0x25AD, "&rect;");
236         entities.set(0x25B5, "&utri;");
237         entities.set(0x25BF, "&dtri;");
238         entities.set(0x22C6, "&star;");
239         entities.set(0x2022, "&bull;");
240         entities.set(0x25AA, "&squf;");
241         entities.set(0x25B4, "&utrif;");
242         entities.set(0x25BE, "&dtrif;");
243         entities.set(0x25C2, "&ltrif;");
244         entities.set(0x25B8, "&rtrif;");
245         entities.set(0x2663, "&clubs;");
246         entities.set(0x2666, "&diams;");
247         entities.set(0x2665, "&hearts;");
248         entities.set(0x2660, "&spades;");
249         entities.set(0x2720, "&malt;");
250         entities.set(0x2020, "&dagger;");
251         entities.set(0x2021, "&Dagger;");
252         entities.set(0x2713, "&check;");
253         entities.set(0x2717, "&cross;");
254         entities.set(0x266F, "&sharp;");
255         entities.set(0x266D, "&flat;");
256         entities.set(0x2642, "&male;");
257         entities.set(0x2640, "&female;");
258         entities.set(0x260E, "&phone;");
259         entities.set(0x2315, "&telrec;");
260         entities.set(0x2117, "&copysr;");
261         entities.set(0x2041, "&caret;");
262         entities.set(0x201A, "&lsquor;");
263         entities.set(0x201E, "&ldquor;");
264         entities.set(0xFB00, "&fflig;");
265         entities.set(0xFB01, "&filig;");
266         entities.set(0xFB03, "&ffilig;");
267         entities.set(0xFB04, "&ffllig;");
268         entities.set(0xFB02, "&fllig;");
269         entities.set(0x2026, "&mldr;");
270         entities.set(0x201C, "&rdquor;");
271         entities.set(0x2018, "&rsquor;");
272         entities.set(0x22EE, "&vellip;");
273         entities.set(0x2043, "&hybull;");
274         entities.set(0x25CA, "&loz;");
275         entities.set(0x2726, "&lozf;");
276         entities.set(0x25C3, "&ltri;");
277         entities.set(0x25B9, "&rtri;");
278         entities.set(0x2605, "&starf;");
279         entities.set(0x266E, "&natur;");
280         entities.set(0x211E, "&rx;");
281         entities.set(0x2736, "&sext;");
282         entities.set(0x2316, "&target;");
283         entities.set(0x230D, "&dlcrop;");
284         entities.set(0x230C, "&drcrop;");
285         entities.set(0x230F, "&ulcrop;");
286         entities.set(0x230E, "&urcrop;");
287         entities.set(0x03B1, "&agr;");
288         entities.set(0x0391, "&Agr;");
289         entities.set(0x03B2, "&bgr;");
290         entities.set(0x0392, "&Bgr;");
291         entities.set(0x03B3, "&ggr;");
292         entities.set(0x0393, "&Ggr;");
293         entities.set(0x03B4, "&dgr;");
294         entities.set(0x0394, "&Dgr;");
295         entities.set(0x03B5, "&egr;");
296         entities.set(0x0395, "&Egr;");
297         entities.set(0x03B6, "&zgr;");
298         entities.set(0x0396, "&Zgr;");
299         entities.set(0x03B7, "&eegr;");
300         entities.set(0x0397, "&EEgr;");
301         entities.set(0x03B8, "&thgr;");
302         entities.set(0x0398, "&THgr;");
303         entities.set(0x03B9, "&igr;");
304         entities.set(0x0399, "&Igr;");
305         entities.set(0x03BA, "&kgr;");
306         entities.set(0x039A, "&Kgr;");
307         entities.set(0x03BB, "&lgr;");
308         entities.set(0x039B, "&Lgr;");
309         entities.set(0x03BC, "&mgr;");
310         entities.set(0x039C, "&Mgr;");
311         entities.set(0x03BD, "&ngr;");
312         entities.set(0x039D, "&Ngr;");
313         entities.set(0x03BE, "&xgr;");
314         entities.set(0x039E, "&Xgr;");
315         entities.set(0x03BF, "&ogr;");
316         entities.set(0x039F, "&Ogr;");
317         entities.set(0x03C0, "&pgr;");
318         entities.set(0x03A0, "&Pgr;");
319         entities.set(0x03C1, "&rgr;");
320         entities.set(0x03A1, "&Rgr;");
321         entities.set(0x03C3, "&sgr;");
322         entities.set(0x03A3, "&Sgr;");
323         entities.set(0x03C2, "&sfgr;");
324         entities.set(0x03C4, "&tgr;");
325         entities.set(0x03A4, "&Tgr;");
326         entities.set(0x03C5, "&ugr;");
327         entities.set(0x03A5, "&Ugr;");
328         entities.set(0x03C6, "&phgr;");
329         entities.set(0x03A6, "&PHgr;");
330         entities.set(0x03C7, "&khgr;");
331         entities.set(0x03A7, "&KHgr;");
332         entities.set(0x03C8, "&psgr;");
333         entities.set(0x03A8, "&PSgr;");
334         entities.set(0x03C9, "&ohgr;");
335         entities.set(0x03A9, "&OHgr;");
336         entities.set(0x03AC, "&aacgr;");
337         entities.set(0x0386, "&Aacgr;");
338         entities.set(0x03AD, "&eacgr;");
339         entities.set(0x0388, "&Eacgr;");
340         entities.set(0x03AE, "&eeacgr;");
341         entities.set(0x0389, "&EEacgr;");
342         entities.set(0x03CA, "&idigr;");
343         entities.set(0x03AA, "&Idigr;");
344         entities.set(0x03AF, "&iacgr;");
345         entities.set(0x038A, "&Iacgr;");
346         entities.set(0x0390, "&idiagr;");
347         entities.set(0x03CC, "&oacgr;");
348         entities.set(0x038C, "&Oacgr;");
349         entities.set(0x03CB, "&udigr;");
350         entities.set(0x03AB, "&Udigr;");
351         entities.set(0x03CD, "&uacgr;");
352         entities.set(0x038E, "&Uacgr;");
353         entities.set(0x03B0, "&udiagr;");
354         entities.set(0x03CE, "&ohacgr;");
355         entities.set(0x038F, "&OHacgr;");
356         entities.set(0x03B1, "&alpha;");
357         entities.set(0x03B2, "&beta;");
358         entities.set(0x03B3, "&gamma;");
359         entities.set(0x0393, "&Gamma;");
360         entities.set(0x03DC, "&gammad;");
361         entities.set(0x03B4, "&delta;");
362         entities.set(0x0394, "&Delta;");
363         entities.set(0x220A, "&epsi;");
364         entities.set(0x03B5, "&epsiv;");
365         entities.set(0x220A, "&epsis;");
366         entities.set(0x03B6, "&zeta;");
367         entities.set(0x03B7, "&eta;");
368         entities.set(0x03B8, "&thetas;");
369         entities.set(0x0398, "&Theta;");
370         entities.set(0x03D1, "&thetav;");
371         entities.set(0x03B9, "&iota;");
372         entities.set(0x03BA, "&kappa;");
373         entities.set(0x03F0, "&kappav;");
374         entities.set(0x03BB, "&lambda;");
375         entities.set(0x039B, "&Lambda;");
376         entities.set(0x03BC, "&mu;");
377         entities.set(0x03BD, "&nu;");
378         entities.set(0x03BE, "&xi;");
379         entities.set(0x039E, "&Xi;");
380         entities.set(0x03C0, "&pi;");
381         entities.set(0x03D6, "&piv;");
382         entities.set(0x03A0, "&Pi;");
383         entities.set(0x03C1, "&rho;");
384         entities.set(0x03F1, "&rhov;");
385         entities.set(0x03C3, "&sigma;");
386         entities.set(0x03A3, "&Sigma;");
387         entities.set(0x03C2, "&sigmav;");
388         entities.set(0x03C4, "&tau;");
389         entities.set(0x03C5, "&upsi;");
390         entities.set(0x03D2, "&Upsi;");
391         entities.set(0x03C6, "&phis;");
392         entities.set(0x03A6, "&Phi;");
393         entities.set(0x03D5, "&phiv;");
394         entities.set(0x03C7, "&chi;");
395         entities.set(0x03C8, "&psi;");
396         entities.set(0x03A8, "&Psi;");
397         entities.set(0x03C9, "&omega;");
398         entities.set(0x03A9, "&Omega;");
399
400         entities.set(0x03B1, "&b.alpha;");
401         entities.set(0x03B2, "&b.beta;");
402         entities.set(0x03B3, "&b.gamma;");
403         entities.set(0x0393, "&b.Gamma;");
404         entities.set(0x03DC, "&b.gammad;");
405         entities.set(0x03B4, "&b.delta;");
406         entities.set(0x0394, "&b.Delta;");
407         entities.set(0x03B5, "&b.epsi;");
408         entities.set(0x03B5, "&b.epsiv;");
409         entities.set(0x03B5, "&b.epsis;");
410         entities.set(0x03B6, "&b.zeta;");
411         entities.set(0x03B7, "&b.eta;");
412         entities.set(0x03B8, "&b.thetas;");
413         entities.set(0x0398, "&b.Theta;");
414         entities.set(0x03D1, "&b.thetav;");
415         entities.set(0x03B9, "&b.iota;");
416         entities.set(0x03BA, "&b.kappa;");
417         entities.set(0x03F0, "&b.kappav;");
418         entities.set(0x03BB, "&b.lambda;");
419         entities.set(0x039B, "&b.Lambda;");
420         entities.set(0x03BC, "&b.mu;");
421         entities.set(0x03BD, "&b.nu;");
422         entities.set(0x03BE, "&b.xi;");
423         entities.set(0x039E, "&b.Xi;");
424         entities.set(0x03C0, "&b.pi;");
425         entities.set(0x03A0, "&b.Pi;");
426         entities.set(0x03D6, "&b.piv;");
427         entities.set(0x03C1, "&b.rho;");
428         entities.set(0x03F1, "&b.rhov;");
429         entities.set(0x03C3, "&b.sigma;");
430         entities.set(0x03A3, "&b.Sigma;");
431         entities.set(0x03C2, "&b.sigmav;");
432         entities.set(0x03C4, "&b.tau;");
433         entities.set(0x03C5, "&b.upsi;");
434         entities.set(0x03D2, "&b.Upsi;");
435         entities.set(0x03C6, "&b.phis;");
436         entities.set(0x03A6, "&b.Phi;");
437         entities.set(0x03D5, "&b.phiv;");
438         entities.set(0x03C7, "&b.chi;");
439         entities.set(0x03C8, "&b.psi;");
440         entities.set(0x03A8, "&b.Psi;");
441         entities.set(0x03C9, "&b.omega;");
442         entities.set(0x03A9, "&b.Omega;");
443         entities.set(0x00E1, "&aacute;");
444         entities.set(0x00C1, "&Aacute;");
445         entities.set(0x00E2, "&acirc;");
446         entities.set(0x00C2, "&Acirc;");
447         entities.set(0x00E0, "&agrave;");
448         entities.set(0x00C0, "&Agrave;");
449         entities.set(0x00E5, "&aring;");
450         entities.set(0x00C5, "&Aring;");
451         entities.set(0x00E3, "&atilde;");
452         entities.set(0x00C3, "&Atilde;");
453         entities.set(0x00E4, "&auml;");
454         entities.set(0x00C4, "&Auml;");
455         entities.set(0x00E6, "&aelig;");
456         entities.set(0x00C6, "&AElig;");
457         entities.set(0x00E7, "&ccedil;");
458         entities.set(0x00C7, "&Ccedil;");
459         entities.set(0x00D0, "&eth;");
460         entities.set(0x00F0, "&ETH;");
461         entities.set(0x00E9, "&eacute;");
462         entities.set(0x00C9, "&Eacute;");
463         entities.set(0x00EA, "&ecirc;");
464         entities.set(0x00CA, "&Ecirc;");
465         entities.set(0x00E8, "&egrave;");
466         entities.set(0x00C8, "&Egrave;");
467         entities.set(0x00EB, "&euml;");
468         entities.set(0x00CB, "&Euml;");
469         entities.set(0x00ED, "&iacute;");
470         entities.set(0x00CD, "&Iacute;");
471         entities.set(0x00EE, "&icirc;");
472         entities.set(0x00CE, "&Icirc;");
473         entities.set(0x00EC, "&igrave;");
474         entities.set(0x00CC, "&Igrave;");
475         entities.set(0x00EF, "&iuml;");
476         entities.set(0x00CF, "&Iuml;");
477         entities.set(0x00F1, "&ntilde;");
478         entities.set(0x00D1, "&Ntilde;");
479         entities.set(0x00F3, "&oacute;");
480         entities.set(0x00D3, "&Oacute;");
481         entities.set(0x00F4, "&ocirc;");
482         entities.set(0x00D4, "&Ocirc;");
483         entities.set(0x00F2, "&ograve;");
484         entities.set(0x00D2, "&Ograve;");
485         entities.set(0x2298, "&oslash;");
486         entities.set(0x00D8, "&Oslash;");
487         entities.set(0x00F5, "&otilde;");
488         entities.set(0x00D5, "&Otilde;");
489         entities.set(0x00F6, "&ouml;");
490         entities.set(0x00D6, "&Ouml;");
491         entities.set(0x00DF, "&szlig;");
492         entities.set(0x00FE, "&thorn;");
493         entities.set(0x00DE, "&THORN;");
494         entities.set(0x00FA, "&uacute;");
495         entities.set(0x00DA, "&Uacute;");
496         entities.set(0x00DB, "&ucirc;");
497         entities.set(0x00FB, "&Ucirc;");
498         entities.set(0x00F9, "&ugrave;");
499         entities.set(0x00D9, "&Ugrave;");
500         entities.set(0x00FC, "&uuml;");
501         entities.set(0x00DC, "&Uuml;");
502         entities.set(0x00FD, "&yacute;");
503         entities.set(0x00DD, "&Yacute;");
504         entities.set(0x00FF, "&yuml;");
505         entities.set(0x0103, "&abreve;");
506         entities.set(0x0102, "&Abreve;");
507         entities.set(0x0101, "&amacr;");
508         entities.set(0x0100, "&Amacr;");
509         entities.set(0x0105, "&aogon;");
510         entities.set(0x0104, "&Aogon;");
511         entities.set(0x0107, "&cacute;");
512         entities.set(0x0106, "&Cacute;");
513         entities.set(0x010D, "&ccaron;");
514         entities.set(0x010C, "&Ccaron;");
515         entities.set(0x0109, "&ccirc;");
516         entities.set(0x0108, "&Ccirc;");
517         entities.set(0x22C5, "&cdot;");
518         entities.set(0x010A, "&Cdot;");
519         entities.set(0x010F, "&dcaron;");
520         entities.set(0x010E, "&Dcaron;");
521         entities.set(0x0111, "&dstrok;");
522         entities.set(0x0110, "&Dstrok;");
523         entities.set(0x011B, "&ecaron;");
524         entities.set(0x011A, "&Ecaron;");
525         entities.set(0x0117, "&edot;");
526         entities.set(0x0116, "&Edot;");
527         entities.set(0x0113, "&emacr;");
528         entities.set(0x0112, "&Emacr;");
529         entities.set(0x0119, "&eogon;");
530         entities.set(0x0118, "&Eogon;");
531         entities.set(0x01F5, "&gacute;");
532         entities.set(0x011F, "&gbreve;");
533         entities.set(0x011E, "&Gbreve;");
534         entities.set(0x0122, "&Gcedil;");
535         entities.set(0x011D, "&gcirc;");
536         entities.set(0x011C, "&Gcirc;");
537         entities.set(0x0121, "&gdot;");
538         entities.set(0x0120, "&Gdot;");
539         entities.set(0x0125, "&hcirc;");
540         entities.set(0x0124, "&Hcirc;");
541         entities.set(0x0127, "&hstrok;");
542         entities.set(0x0126, "&Hstrok;");
543         entities.set(0x0130, "&Idot;");
544         entities.set(0x012A, "&Imacr;");
545         entities.set(0x012B, "&imacr;");
546         entities.set(0x0133, "&ijlig;");
547         entities.set(0x0132, "&IJlig;");
548         entities.set(0x0131, "&inodot;");
549         entities.set(0x012F, "&iogon;");
550         entities.set(0x012E, "&Iogon;");
551         entities.set(0x0129, "&itilde;");
552         entities.set(0x0128, "&Itilde;");
553         entities.set(0x0135, "&jcirc;");
554         entities.set(0x0134, "&Jcirc;");
555         entities.set(0x0137, "&kcedil;");
556         entities.set(0x0136, "&Kcedil;");
557         entities.set(0x0138, "&kgreen;");
558         entities.set(0x013A, "&lacute;");
559         entities.set(0x0139, "&Lacute;");
560         entities.set(0x013E, "&lcaron;");
561         entities.set(0x013D, "&Lcaron;");
562         entities.set(0x013C, "&lcedil;");
563         entities.set(0x013B, "&Lcedil;");
564         entities.set(0x0140, "&lmidot;");
565         entities.set(0x013F, "&Lmidot;");
566         entities.set(0x0142, "&lstrok;");
567         entities.set(0x0141, "&Lstrok;");
568         entities.set(0x0144, "&nacute;");
569         entities.set(0x0143, "&Nacute;");
570         entities.set(0x014B, "&eng;");
571         entities.set(0x014A, "&ENG;");
572         entities.set(0x0149, "&napos;");
573         entities.set(0x0148, "&ncaron;");
574         entities.set(0x0147, "&Ncaron;");
575         entities.set(0x0146, "&ncedil;");
576         entities.set(0x0145, "&Ncedil;");
577         entities.set(0x0151, "&odblac;");
578         entities.set(0x0150, "&Odblac;");
579         entities.set(0x014C, "&Omacr;");
580         entities.set(0x014D, "&omacr;");
581         entities.set(0x0153, "&oelig;");
582         entities.set(0x0152, "&OElig;");
583         entities.set(0x0155, "&racute;");
584         entities.set(0x0154, "&Racute;");
585         entities.set(0x0159, "&rcaron;");
586         entities.set(0x0158, "&Rcaron;");
587         entities.set(0x0157, "&rcedil;");
588         entities.set(0x0156, "&Rcedil;");
589         entities.set(0x015B, "&sacute;");
590         entities.set(0x015A, "&Sacute;");
591         entities.set(0x0161, "&scaron;");
592         entities.set(0x0160, "&Scaron;");
593         entities.set(0x015F, "&scedil;");
594         entities.set(0x015E, "&Scedil;");
595         entities.set(0x015D, "&scirc;");
596         entities.set(0x015C, "&Scirc;");
597         entities.set(0x0165, "&tcaron;");
598         entities.set(0x0164, "&Tcaron;");
599         entities.set(0x0163, "&tcedil;");
600         entities.set(0x0162, "&Tcedil;");
601         entities.set(0x0167, "&tstrok;");
602         entities.set(0x0166, "&Tstrok;");
603         entities.set(0x016D, "&ubreve;");
604         entities.set(0x016C, "&Ubreve;");
605         entities.set(0x0171, "&udblac;");
606         entities.set(0x0170, "&Udblac;");
607         entities.set(0x016B, "&umacr;");
608         entities.set(0x016A, "&Umacr;");
609         entities.set(0x0173, "&uogon;");
610         entities.set(0x0172, "&Uogon;");
611         entities.set(0x016F, "&uring;");
612         entities.set(0x016E, "&Uring;");
613         entities.set(0x0169, "&utilde;");
614         entities.set(0x0168, "&Utilde;");
615         entities.set(0x0175, "&wcirc;");
616         entities.set(0x0174, "&Wcirc;");
617         entities.set(0x0177, "&ycirc;");
618         entities.set(0x0176, "&Ycirc;");
619         entities.set(0x0178, "&Yuml;");
620         entities.set(0x017A, "&zacute;");
621         entities.set(0x0179, "&Zacute;");
622         entities.set(0x017E, "&zcaron;");
623         entities.set(0x017D, "&Zcaron;");
624         entities.set(0x017C, "&zdot;");
625         entities.set(0x017B, "&Zdot;");
626         entities.set(0x2135, "&aleph;");
627         entities.set(0x2227, "&and;");
628         entities.set(0x221F, "&ang90;");
629         entities.set(0x2222, "&angsph;");
630         entities.set(0x2248, "&ap;");
631         entities.set(0x2235, "&becaus;");
632         entities.set(0x22A5, "&bottom;");
633         entities.set(0x2229, "&cap;");
634         entities.set(0x2245, "&cong;");
635         entities.set(0x222E, "&conint;");
636         entities.set(0x222A, "&cup;");
637         entities.set(0x2261, "&equiv;");
638         entities.set(0x2203, "&exist;");
639         entities.set(0x2200, "&forall;");
640         entities.set(0x0192, "&fnof;");
641         entities.set(0x2265, "&ge;");
642         entities.set(0xE365, "&iff;");
643         entities.set(0x221E, "&infin;");
644         entities.set(0x222B, "&int;");
645         entities.set(0x220A, "&isin;");
646         entities.set(0x3008, "&lang;");
647         entities.set(0x21D0, "&lArr;");
648         entities.set(0x2264, "&le;");
649         entities.set(0x2212, "&minus;");
650         entities.set(0x2213, "&mnplus;");
651         entities.set(0x2207, "&nabla;");
652         entities.set(0x2260, "&ne;");
653         entities.set(0x220D, "&ni;");
654         entities.set(0x2228, "&or;");
655         entities.set(0x2225, "&par;");
656         entities.set(0x2202, "&part;");
657         entities.set(0x2030, "&permil;");
658         entities.set(0x22A5, "&perp;");
659         entities.set(0x2032, "&prime;");
660         entities.set(0x2033, "&Prime;");
661         entities.set(0x221D, "&prop;");
662         entities.set(0x221A, "&radic;");
663         entities.set(0x3009, "&rang;");
664         entities.set(0x21D2, "&rArr;");
665         entities.set(0x223C, "&sim;");
666         entities.set(0x2243, "&sime;");
667         entities.set(0x25A1, "&square;");
668         entities.set(0x2282, "&sub;");
669         entities.set(0x2286, "&sube;");
670         entities.set(0x2283, "&sup;");
671         entities.set(0x2287, "&supe;");
672         entities.set(0x2234, "&there4;");
673         entities.set(0x2016, "&Verbar;");
674         entities.set(0x212B, "&angst;");
675         entities.set(0x212C, "&bernou;");
676         entities.set(0x2218, "&compfn;");
677         entities.set(0x0308, "&Dot;");
678         entities.set(0x20DC, "&DotDot;");
679         entities.set(0x210B, "&hamilt;");
680         entities.set(0x2112, "&lagran;");
681         entities.set(0x2217, "&lowast;");
682         entities.set(0x2209, "&notin;");
683         entities.set(0x2134, "&order;");
684         entities.set(0x2133, "&phmmat;");
685         entities.set(0x20DB, "&tdot;");
686         entities.set(0x2034, "&tprime;");
687         entities.set(0x2259, "&wedgeq;");
688
689         // these should be last as they are the most recognizable forms for these characters
690
// and there may be a less common mapping above.
691

692         //entities.set(0x00BD,"&half;");
693
entities.set(0x00BD, "&frac12;");
694         entities.set(0x00BC, "&frac14;");
695         entities.set(0x00BE, "&frac34;");
696         entities.set(0x215B, "&frac18;");
697         entities.set(0x215C, "&frac38;");
698         entities.set(0x215D, "&frac58;");
699         entities.set(0x215E, "&frac78;");
700         entities.set(0x00B9, "&sup1;");
701         entities.set(0x00B2, "&sup2;");
702         entities.set(0x00B3, "&sup3;");
703         entities.set(0x002B, "&plus;");
704         entities.set(0x00B1, "&plusmn;");
705         entities.set(0x003C, "&lt;");
706         entities.set(0x003D, "&equals;");
707         entities.set(0x003E, "&gt;");
708         entities.set(0x00F7, "&divide;");
709         entities.set(0x00D7, "&times;");
710         entities.set(0x00A4, "&curren;");
711         entities.set(0x00A3, "&pound;");
712         entities.set(0x0024, "&dollar;");
713         entities.set(0x00A2, "&cent;");
714         entities.set(0x00A5, "&yen;");
715         entities.set(0x0023, "&num;");
716         entities.set(0x0025, "&percnt;");
717         entities.set(0x0026, "&amp;");
718         entities.set(0x2217, "&ast;");
719         entities.set(0x0040, "&commat;");
720         entities.set(0x005B, "&lsqb;");
721         entities.set(0x005C, "&bsol;");
722         entities.set(0x005D, "&rsqb;");
723         entities.set(0x007B, "&lcub;");
724         entities.set(0x2015, "&horbar;");
725         entities.set(0x007C, "&verbar;");
726         entities.set(0x007D, "&rcub;");
727         entities.set(0x00B5, "&micro;");
728         entities.set(0x2126, "&ohm;");
729         entities.set(0x00B0, "&deg;");
730         entities.set(0x00BA, "&ordm;");
731         entities.set(0x00AA, "&ordf;");
732         entities.set(0x00A7, "&sect;");
733         entities.set(0x00B6, "&para;");
734         entities.set(0x00B7, "&middot;");
735         entities.set(0x2190, "&larr;");
736         entities.set(0x2192, "&rarr;");
737         entities.set(0x2191, "&uarr;");
738         entities.set(0x2193, "&darr;");
739         entities.set(0x00A9, "&copy;");
740         entities.set(0x00AE, "&reg;");
741         entities.set(0x2122, "&trade;");
742         entities.set(0x00A6, "&brvbar;");
743         entities.set(0x00AC, "&not;");
744         entities.set(0x2669, "&sung;");
745         entities.set(0x0021, "&excl;");
746         entities.set(0x00A1, "&iexcl;");
747         entities.set(0x0022, "&quot;");
748         entities.set(0x0027, "&apos;");
749         entities.set(0x0028, "&lpar;");
750         entities.set(0x0029, "&rpar;");
751         entities.set(0x002C, "&comma;");
752         entities.set(0x005F, "&lowbar;");
753         entities.set(0xE4F8, "&hyphen;");
754         entities.set(0x002E, "&period;");
755         entities.set(0x002F, "&sol;");
756         entities.set(0x003A, "&colon;");
757         entities.set(0x003B, "&semi;");
758         entities.set(0x003F, "&quest;");
759         entities.set(0x00BF, "&iquest;");
760         entities.set(0x00AB, "&laquo;");
761         entities.set(0x00BB, "&raquo;");
762         entities.set(0x2018, "&lsquo;");
763         entities.set(0x2019, "&rsquo;");
764         entities.set(0x201C, "&ldquo;");
765         entities.set(0x201D, "&rdquo;");
766         entities.set(0x00A0, "&nbsp;");
767         entities.set(0x00AD, "&shy;");
768
769     }
770 }
771
Popular Tags