CommonEntitySubstitutions.java

/**
 * 
 */
package edu.odu.cs.cowem.documents;

/**
 * A collection of text substitutions to repalce sommon HTML
 * entities by their Unicode numeric equivalents.
 * 
 * @author zeil
 *
 */
public class CommonEntitySubstitutions implements TextSubstitutions {

    /**
     * PegDown inserts various common HTML entities into its output.
     * These are an inconvenience during XSLT processing, however, as they
     * are not defined in general XML processing. This table is used to
     * replace these common symbolic entuities by their Unicode numeric
     * codes. 
     */
    private static final String[] COMMON_ENTITIES = {
            "cent",     "#162",  
            "pound", "#163",
            "sect", "#167",
            "copy", "#169",
            "laquo", "#171",
            "raquo", "#187",
            "reg", "#174",
            "deg", "#176",
            "plusmn", "#177",
            "para", "#182",
            "middot", "#183",
            "frac12", "#188",
            "ndash", "#8211",
            "mdash", "#8212",
            "lsquo", "#8216",
            "rsquo", "#8217",
            "sbquo", "#8218",
            "ldquo", "#8220", 
            "rdquo", "#8221",
            "bdquo", "#8222",
            "dagger", "#8224",
            "Dagger", "#8225",
            "bull", "#8226",
            "hellip", "#8230",
            "prime", "#8242",
            "Prime", "#8243",
            "euro", "#8364",
            "trade", "#8482",
            "asymp", "#8776",
            "ne", "#8800",
            "le", "#8804",
            "ge", "#8805",
            "nbsp", "#160"
    };


    /**
     * Create a substitution set.
     */
    public CommonEntitySubstitutions() {
    }


    /**
     * Apply substitutions.
     * 
     * @param toString  original string
     * @return original after applying substitutions.
     */
    @Override
    public final String apply(final String toString) {
        String result = toString;
        for (int i = 0; i < COMMON_ENTITIES.length; i += 2) {
            String target = "&" + COMMON_ENTITIES[i] + ";";
            String value = "&" + COMMON_ENTITIES[i + 1] + ";";
            result = result.replace(target, value);
        }
        return result;
    }

}