FileDocCategorySizeDatePackage
Entities.javaAPI DocExample10983Tue Jun 24 13:23:04 BST 2003org.apache.lucene.demo.html

Entities.java

package org.apache.lucene.demo.html;

/* ====================================================================
 * The Apache Software License, Version 1.1
 *
 * Copyright (c) 2001 The Apache Software Foundation.  All rights
 * reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in
 *    the documentation and/or other materials provided with the
 *    distribution.
 *
 * 3. The end-user documentation included with the redistribution,
 *    if any, must include the following acknowledgment:
 *       "This product includes software developed by the
 *        Apache Software Foundation (http://www.apache.org/)."
 *    Alternately, this acknowledgment may appear in the software itself,
 *    if and wherever such third-party acknowledgments normally appear.
 *
 * 4. The names "Apache" and "Apache Software Foundation" and
 *    "Apache Lucene" must not be used to endorse or promote products
 *    derived from this software without prior written permission. For
 *    written permission, please contact apache@apache.org.
 *
 * 5. Products derived from this software may not be called "Apache",
 *    "Apache Lucene", nor may "Apache" appear in their name, without
 *    prior written permission of the Apache Software Foundation.
 *
 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 * SUCH DAMAGE.
 * ====================================================================
 *
 * This software consists of voluntary contributions made by many
 * individuals on behalf of the Apache Software Foundation.  For more
 * information on the Apache Software Foundation, please see
 * <http://www.apache.org/>.
 */

import java.util.*;

public class Entities {
  static final Hashtable decoder = new Hashtable(300);
  static final String[]  encoder = new String[0x100];

  static final String decode(String entity) {
    if (entity.charAt(entity.length()-1) == ';')  // remove trailing semicolon
      entity = entity.substring(0, entity.length()-1);
    if (entity.charAt(1) == '#') {
      int start = 2;
      int radix = 10;
      if (entity.charAt(2) == 'X' || entity.charAt(2) == 'x') {
	start++;
	radix = 16;
      }
      Character c =
	new Character((char)Integer.parseInt(entity.substring(start), radix));
      return c.toString();
    } else {
      String s = (String)decoder.get(entity);
      if (s != null)
	return s;
      else return "";
    }
  }

  static final public String encode(String s) {
    int length = s.length();
    StringBuffer buffer = new StringBuffer(length * 2);
    for (int i = 0; i < length; i++) {
      char c = s.charAt(i);
      int j = (int)c;
      if (j < 0x100 && encoder[j] != null) {
	buffer.append(encoder[j]);		  // have a named encoding
	buffer.append(';');
      } else if (j < 0x80) {
	buffer.append(c);			  // use ASCII value
      } else {
	buffer.append("&#");			  // use numeric encoding
	buffer.append((int)c);
	buffer.append(';');
      }
    }
    return buffer.toString();
  }

  static final void add(String entity, int value) {
    decoder.put(entity, (new Character((char)value)).toString());
    if (value < 0x100)
      encoder[value] = entity;
  }

  static {
    add(" ",   160);
    add("¡",  161);
    add("¢",   162);
    add("£",  163);
    add("¤", 164);
    add("¥",    165);
    add("¦", 166);
    add("§",   167);
    add("¨",    168);
    add("©",   169);
    add("ª",   170);
    add("«",  171);
    add("¬",    172);
    add("­",    173);
    add("®",    174);
    add("¯",   175);
    add("°",    176);
    add("±", 177);
    add("²",   178);
    add("³",   179);
    add("´",  180);
    add("µ",  181);
    add("¶",   182);
    add("·", 183);
    add("¸",  184);
    add("¹",   185);
    add("º",   186);
    add("»",  187);
    add("¼", 188);
    add("½", 189);
    add("¾", 190);
    add("¿", 191);
    add("À", 192);
    add("Á", 193);
    add("Â",  194);
    add("Ã", 195);
    add("Ä",   196);
    add("Å",  197);
    add("Æ",  198);
    add("Ç", 199);
    add("È", 200);
    add("É", 201);
    add("Ê",  202);
    add("Ë",   203);
    add("Ì", 204);
    add("Í", 205);
    add("Î",  206);
    add("Ï",   207);
    add("Ð",    208);
    add("Ñ", 209);
    add("Ò", 210);
    add("Ó", 211);
    add("Ô",  212);
    add("Õ", 213);
    add("Ö",   214);
    add("×",  215);
    add("Ø", 216);
    add("Ù", 217);
    add("Ú", 218);
    add("Û",  219);
    add("Ü",   220);
    add("Ý", 221);
    add("Þ",  222);
    add("ß",  223);
    add("à", 224);
    add("á", 225);
    add("â",  226);
    add("ã", 227);
    add("ä",   228);
    add("å",  229);
    add("æ",  230);
    add("ç", 231);
    add("è", 232);
    add("é", 233);
    add("ê",  234);
    add("ë",   235);
    add("ì", 236);
    add("í", 237);
    add("î",  238);
    add("ï",   239);
    add("ð",    240);
    add("ñ", 241);
    add("ò", 242);
    add("ó", 243);
    add("ô",  244);
    add("õ", 245);
    add("ö",   246);
    add("÷", 247);
    add("ø", 248);
    add("ù", 249);
    add("ú", 250);
    add("û",  251);
    add("ü",   252);
    add("ý", 253);
    add("þ",  254);
    add("ÿ",   255);
    add("&fnof",   402);
    add("&Alpha",  913);
    add("&Beta",   914);
    add("&Gamma",  915);
    add("&Delta",  916);
    add("&Epsilon",917);
    add("&Zeta",   918);
    add("&Eta",    919);
    add("&Theta",  920);
    add("&Iota",   921);
    add("&Kappa",  922);
    add("&Lambda", 923);
    add("&Mu",     924);
    add("&Nu",     925);
    add("&Xi",     926);
    add("&Omicron",927);
    add("&Pi",     928);
    add("&Rho",    929);
    add("&Sigma",  931);
    add("&Tau",    932);
    add("&Upsilon",933);
    add("&Phi",    934);
    add("&Chi",    935);
    add("&Psi",    936);
    add("&Omega",  937);
    add("&alpha",  945);
    add("&beta",   946);
    add("&gamma",  947);
    add("&delta",  948);
    add("&epsilon",949);
    add("&zeta",   950);
    add("&eta",    951);
    add("&theta",  952);
    add("&iota",   953);
    add("&kappa",  954);
    add("&lambda", 955);
    add("&mu",     956);
    add("&nu",     957);
    add("&xi",     958);
    add("&omicron",959);
    add("&pi",     960);
    add("&rho",    961);
    add("&sigmaf", 962);
    add("&sigma",  963);
    add("&tau",    964);
    add("&upsilon",965);
    add("&phi",    966);
    add("&chi",    967);
    add("&psi",    968);
    add("&omega",  969);
    add("&thetasym",977);
    add("&upsih",  978);
    add("&piv",    982);
    add("&bull",   8226);
    add("&hellip", 8230);
    add("&prime",  8242);
    add("&Prime",  8243);
    add("&oline",  8254);
    add("&frasl",  8260);
    add("&weierp", 8472);
    add("&image",  8465);
    add("&real",   8476);
    add("&trade",  8482);
    add("&alefsym",8501);
    add("&larr",   8592);
    add("&uarr",   8593);
    add("&rarr",   8594);
    add("&darr",   8595);
    add("&harr",   8596);
    add("&crarr",  8629);
    add("&lArr",   8656);
    add("&uArr",   8657);
    add("&rArr",   8658);
    add("&dArr",   8659);
    add("&hArr",   8660);
    add("&forall", 8704);
    add("&part",   8706);
    add("&exist",  8707);
    add("&empty",  8709);
    add("&nabla",  8711);
    add("&isin",   8712);
    add("¬in",  8713);
    add("&ni",     8715);
    add("&prod",   8719);
    add("&sum",    8721);
    add("&minus",  8722);
    add("&lowast", 8727);
    add("&radic",  8730);
    add("&prop",   8733);
    add("&infin",  8734);
    add("&ang",    8736);
    add("&and",    8743);
    add("&or",     8744);
    add("&cap",    8745);
    add("&cup",    8746);
    add("&int",    8747);
    add("&there4", 8756);
    add("&sim",    8764);
    add("&cong",   8773);
    add("&asymp",  8776);
    add("&ne",     8800);
    add("&equiv",  8801);
    add("&le",     8804);
    add("&ge",     8805);
    add("&sub",    8834);
    add("&sup",    8835);
    add("&nsub",   8836);
    add("&sube",   8838);
    add("&supe",   8839);
    add("&oplus",  8853);
    add("&otimes", 8855);
    add("&perp",   8869);
    add("&sdot",   8901);
    add("&lceil",  8968);
    add("&rceil",  8969);
    add("&lfloor", 8970);
    add("&rfloor", 8971);
    add("&lang",   9001);
    add("&rang",   9002);
    add("&loz",    9674);
    add("&spades", 9824);
    add("&clubs",  9827);
    add("&hearts", 9829);
    add("&diams",  9830);
    add(""",   34);
    add("&",    38);
    add("<",     60);
    add(">",     62);
    add("&OElig",  338);
    add("&oelig",  339);
    add("&Scaron", 352);
    add("&scaron", 353);
    add("&Yuml",   376);
    add("&circ",   710);
    add("&tilde",  732);
    add("&ensp",   8194);
    add("&emsp",   8195);
    add("&thinsp", 8201);
    add("&zwnj",   8204);
    add("&zwj",    8205);
    add("&lrm",    8206);
    add("&rlm",    8207);
    add("&ndash",  8211);
    add("&mdash",  8212);
    add("&lsquo",  8216);
    add("&rsquo",  8217);
    add("&sbquo",  8218);
    add("&ldquo",  8220);
    add("&rdquo",  8221);
    add("&bdquo",  8222);
    add("&dagger", 8224);
    add("&Dagger", 8225);
    add("&permil", 8240);
    add("&lsaquo", 8249);
    add("&rsaquo", 8250);
    add("&euro",   8364);

  }
}