/***************************************************************************** * Copyright (c) 2015 CEA LIST. * * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Dirk Fauth <dirk.fauth@googlemail.com> - Initial API and implementation * *****************************************************************************/ package org.eclipse.nebula.widgets.richtext.painter; import javax.xml.stream.events.EntityReference; /** * Default implementation of {@link EntityReplacer} that knows about the most common HTML entities. */ public class DefaultEntityReplacer implements EntityReplacer { @Override public String getEntityReferenceValue(EntityReference reference) { String entity = reference.getName(); String value = null; switch (entity) { case "quot": value = "\\u0022"; break; case "amp": value = "\u0026"; break; case "apos": value = "\u0027"; break; case "lt": value = "\u003c"; break; case "gt": value = "\u003e"; break; case "nbsp": value = "\u00a0"; break; case "iexcl": value = "\u00a1"; break; case "cent": value = "\u00a2"; break; case "pound": value = "\u00a3"; break; case "curren": value = "\u00a4"; break; case "yen": value = "\u00a5"; break; case "brvbar": value = "\u00a6"; break; case "sect": value = "\u00a7"; break; case "uml": value = "\u00a8"; break; case "copy": value = "\u00a9"; break; case "ordf": value = "\u00aa"; break; case "laquo": value = "\u00ab"; break; case "not": value = "\u00ac"; break; case "shy": value = "\u00ad"; break; case "reg": value = "\u00ae"; break; case "macr": value = "\u00af"; break; case "deg": value = "\u00b0"; break; case "plusmn": value = "\u00b1"; break; case "sup2": value = "\u00b2"; break; case "sup3": value = "\u00b3"; break; case "acute": value = "\u00b4"; break; case "micro": value = "\u00b5"; break; case "para": value = "\u00b6"; break; case "middot": value = "\u00b7"; break; case "cedil": value = "\u00b8"; break; case "sup1": value = "\u00b9"; break; case "ordm": value = "\u00ba"; break; case "raquo": value = "\u00bb"; break; case "frac14": value = "\u00bc"; break; case "frac12": value = "\u00bd"; break; case "frac34": value = "\u00be"; break; case "iquest": value = "\u00bf"; break; case "Agrave": value = "\u00c0"; break; case "Aacute": value = "\u00c1"; break; case "Acirc": value = "\u00c2"; break; case "Atilde": value = "\u00c3"; break; case "Auml": value = "\u00c4"; break; case "Aring": value = "\u00c5"; break; case "AElig": value = "\u00c6"; break; case "Ccedil": value = "\u00c7"; break; case "Egrave": value = "\u00c8"; break; case "Eacute": value = "\u00c9"; break; case "Ecirc": value = "\u00ca"; break; case "Euml": value = "\u00cb"; break; case "Igrave": value = "\u00cc"; break; case "Iacute": value = "\u00cd"; break; case "Icirc": value = "\u00ce"; break; case "Iuml": value = "\u00cf"; break; case "ETH": value = "\u00d0"; break; case "Ntilde": value = "\u00d1"; break; case "Ograve": value = "\u00d2"; break; case "Oacute": value = "\u00d3"; break; case "Ocirc": value = "\u00d4"; break; case "Otilde": value = "\u00d5"; break; case "Ouml": value = "\u00d6"; break; case "times": value = "\u00d7"; break; case "Oslash": value = "\u00d8"; break; case "Ugrave": value = "\u00d9"; break; case "Uacute": value = "\u00da"; break; case "Ucirc": value = "\u00db"; break; case "Uuml": value = "\u00dc"; break; case "Yacute": value = "\u00dd"; break; case "THORN": value = "\u00de"; break; case "szlig": value = "\u00df"; break; case "agrave": value = "\u00e0"; break; case "aacute": value = "\u00e1"; break; case "acirc": value = "\u00e2"; break; case "atilde": value = "\u00e3"; break; case "auml": value = "\u00e4"; break; case "aring": value = "\u00e5"; break; case "aelig": value = "\u00e6"; break; case "ccedil": value = "\u00e7"; break; case "egrave": value = "\u00e8"; break; case "eacute": value = "\u00e9"; break; case "ecirc": value = "\u00ea"; break; case "euml": value = "\u00eb"; break; case "igrave": value = "\u00ec"; break; case "iacute": value = "\u00ed"; break; case "icirc": value = "\u00ee"; break; case "iuml": value = "\u00ef"; break; case "ntilde": value = "\u00f1"; break; case "ograve": value = "\u00f2"; break; case "oacute": value = "\u00f3"; break; case "ocirc": value = "\u00f4"; break; case "otilde": value = "\u00f5"; break; case "ouml": value = "\u00f6"; break; case "divide": value = "\u00f7"; break; case "oslash": value = "\u00f8"; break; case "ugrave": value = "\u00f9"; break; case "uacute": value = "\u00fa"; break; case "ucirc": value = "\u00fb"; break; case "uuml": value = "\u00fc"; break; case "yacute": value = "\u00fd"; break; case "thorn": value = "\u00fe"; break; case "yuml": value = "\u00ff"; break; case "OElig": value = "\u0152"; break; case "oelig": value = "\u0153"; break; case "Scaron": value = "\u0160"; break; case "scaron": value = "\u0161"; break; case "Yuml": value = "\u0178"; break; case "fnof": value = "\u0192"; break; case "circ": value = "\u02c6"; break; case "tilde": value = "\u02dc"; break; case "Alpha": value = "\u0391"; break; case "Beta": value = "\u0392"; break; case "Gamma": value = "\u0393"; break; case "Delta": value = "\u0394"; break; case "Epsilon": value = "\u0395"; break; case "Zeta": value = "\u0396"; break; case "Eta": value = "\u0397"; break; case "Theta": value = "\u0398"; break; case "Iota": value = "\u0399"; break; case "Kappa": value = "\u039a"; break; case "Lambda": value = "\u039b"; break; case "Mu": value = "\u039c"; break; case "Nu": value = "\u039d"; break; case "Xi": value = "\u039e"; break; case "Omicron": value = "\u039f"; break; case "Pi": value = "\u03a0"; break; case "Rho": value = "\u03a1"; break; case "Sigma": value = "\u03a3"; break; case "Tau": value = "\u03a4"; break; case "Upsilon": value = "\u03a5"; break; case "Phi": value = "\u03a6"; break; case "Chi": value = "\u03a7"; break; case "Psi": value = "\u03a8"; break; case "Omega": value = "\u03a9"; break; case "alpha": value = "\u03b1"; break; case "beta": value = "\u03b2"; break; case "gamma": value = "\u03b3"; break; case "delta": value = "\u03b4"; break; case "epsilon": value = "\u03b5"; break; case "zeta": value = "\u03b6"; break; case "eta": value = "\u03b7"; break; case "theta": value = "\u03b8"; break; case "iota": value = "\u03b9"; break; case "kappa": value = "\u03ba"; break; case "lambda": value = "\u03bb"; break; case "mu": value = "\u03bc"; break; case "nu": value = "\u03bd"; break; case "xi": value = "\u03be"; break; case "omicron": value = "\u03bf"; break; case "pi": value = "\u03c0"; break; case "rho": value = "\u03c1"; break; case "sigmaf": value = "\u03c2"; break; case "sigma": value = "\u03c3"; break; case "tau": value = "\u03c4"; break; case "upsilon": value = "\u03c5"; break; case "phi": value = "\u03c6"; break; case "chi": value = "\u03c7"; break; case "psi": value = "\u03c8"; break; case "omega": value = "\u03c9"; break; case "thetasym": value = "\u03d1"; break; case "upsih": value = "\u03d2"; break; case "piv": value = "\u03d6"; break; case "ndash": value = "\u2013"; break; case "mdash": value = "\u2014"; break; case "lsquo": value = "\u2018"; break; case "rsquo": value = "\u2019"; break; case "sbquo": value = "\u201a"; break; case "ldquo": value = "\u201c"; break; case "rdquo": value = "\u201d"; break; case "bdquo": value = "\u201e"; break; case "dagger": value = "\u2020"; break; case "Dagger": value = "\u2021"; break; case "bull": value = "\u2022"; break; case "hellip": value = "\u2026"; break; case "permil": value = "\u2030"; break; case "prime": value = "\u2032"; break; case "Prime": value = "\u2033"; break; case "lsaquo": value = "\u2039"; break; case "rsaquo": value = "\u203a"; break; case "oline": value = "\u203e"; break; case "frasl": value = "\u2044"; break; case "euro": value = "\u20ac"; break; case "image": value = "\u2111"; break; case "weierp": value = "\u2118"; break; case "real": value = "\u211c"; break; case "trade": value = "\u2122"; break; case "alefsym": value = "\u2135"; break; case "larr": value = "\u2190"; break; case "uarr": value = "\u2191"; break; case "rarr": value = "\u2192"; break; case "darr": value = "\u2193"; break; case "harr": value = "\u2194"; break; case "crarr": value = "\u21b5"; break; case "lArr": value = "\u21d0"; break; case "uArr": value = "\u21d1"; break; case "rArr": value = "\u21d2"; break; case "dArr": value = "\u21d3"; break; case "hArr": value = "\u21d4"; break; case "forall": value = "\u2200"; break; case "part": value = "\u2202"; break; case "exist": value = "\u2203"; break; case "empty": value = "\u2205"; break; case "nabla": value = "\u2207"; break; case "isin": value = "\u2208"; break; case "notin": value = "\u2209"; break; case "ni": value = "\u220b"; break; case "prod": value = "\u220f"; break; case "sum": value = "\u2211"; break; case "minus": value = "\u2212"; break; case "lowast": value = "\u2217"; break; case "radic": value = "\u221a"; break; case "prop": value = "\u221d"; break; case "infin": value = "\u221e"; break; case "ang": value = "\u2220"; break; case "and": value = "\u2227"; break; case "or": value = "\u2228"; break; case "cap": value = "\u2229"; break; case "cup": value = "\u222a"; break; case "int": value = "\u222b"; break; case "there4": value = "\u2234"; break; case "sim": value = "\u223c"; break; case "cong": value = "\u2245"; break; case "asymp": value = "\u2248"; break; case "ne": value = "\u2260"; break; case "equiv": value = "\u2261"; break; case "le": value = "\u2264"; break; case "ge": value = "\u2265"; break; case "sub": value = "\u2282"; break; case "sup": value = "\u2283"; break; case "nsub": value = "\u2284"; break; case "sube": value = "\u2286"; break; case "supe": value = "\u2287"; break; case "oplus": value = "\u2295"; break; case "otimes": value = "\u2297"; break; case "perp": value = "\u22a5"; break; case "sdot": value = "\u22c5"; break; case "lceil": value = "\u2308"; break; case "rceil": value = "\u2309"; break; case "lfloor": value = "\u230a"; break; case "rfloor": value = "\u230b"; break; case "lang": value = "\u2329"; break; case "rang": value = "\u232a"; break; case "loz": value = "\u25ca"; break; case "spades": value = "\u2660"; break; case "clubs": value = "\u2663"; break; case "hearts": value = "\u2665"; break; case "diams": value = "\u2666"; break; default: value = "\u0026" + entity + ";"; break; } return value; } }