/* * Copyright 2008 Eckhart Arnold (eckhart_arnold@hotmail.com). * * Licensed under the Apache License, Version 2.0 (the "License"); you may not * use this file except in compliance with the License. You may obtain a copy of * the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ package de.eckhartarnold.client; import com.google.gwt.safehtml.shared.HtmlSanitizer; import com.google.gwt.safehtml.shared.SafeHtml; import com.google.gwt.safehtml.shared.OnlyToBeUsedInGeneratedCodeStringBlessedAsSafeHtml; import com.google.gwt.safehtml.shared.SimpleHtmlSanitizer; /** * @author eckhart * * <code>ExtendedHtmlSanitizer</code> is an extended version of * <code>com.google.gwt.safehtml.shared.HtmlSanitizer</code>. In contrast to * the latter it also leaves line break "br" tags in the code. * * Thus, captions, titles and subtitle may contain line breaks as well. */ public class ExtendedHtmlSanitizer implements HtmlSanitizer { /** The instance variable of the singelton object ExtendedHtmlSanitizer */ private static ExtendedHtmlSanitizer singleton; public static ExtendedHtmlSanitizer getInstance() { if (singleton == null) { singleton = new ExtendedHtmlSanitizer(); } return singleton; } /** * HTML sanitizes a string, i.e. escapes all HTML tags and characters except * a small number like b, br. * @param html the yet "unsanitized" string * @return the HTML-sanitized string. */ public static SafeHtml sanitizeHTML(String html) { return getInstance().sanitize(html); } /* (non-Javadoc) * @see com.google.gwt.safehtml.shared.HtmlSanitizer#sanitize(java.lang.String) */ @Override public SafeHtml sanitize(String html) { String s = html.replaceAll("\n", "").replaceAll("<br>", "\n").replaceAll("<br />", "\n"); String sanitized = SimpleHtmlSanitizer.sanitizeHtml(s).asString(); return new OnlyToBeUsedInGeneratedCodeStringBlessedAsSafeHtml( sanitized.replaceAll("\n", "<br />")); } }