/*
* Copyright (C) 2003-2009 eXo Platform SAS.
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License
* as published by the Free Software Foundation; either version 3
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see<http://www.gnu.org/licenses/>.
*/
package org.exoplatform.ks.bbcode.core;
import java.util.Collection;
import java.util.HashMap;
import org.exoplatform.ks.bbcode.api.BBCode;
import org.exoplatform.ks.bbcode.spi.BBCodeProvider;
/**
* Builtin BBCode provider. Porvides definitions for the following standard BBCodes :
* I,B,U,COLOR,SIZE,FONT,HIGHLIGHT,LEFT,RIGHT,CENTER,JUSTIFY,EMAIL,URL,GOTO,LIST,IMG,QUOTE,CSS
* @author <a href="mailto:patrice.lamarque@exoplatform.com">Patrice Lamarque</a>
* @version $Revision$
*/
public class BuiltinBBCodeProvider extends HashMap<String, BBCode> implements BBCodeProvider {
/**
*
*/
private static final long serialVersionUID = -4330438782881224247L;
public BuiltinBBCodeProvider() {
addBBCode("I", "<i>{param}</i>", false);
addBBCode("B", "<b>{param}</b>", false);
addBBCode("U", "<u>{param}</u>", false);
addBBCode("COLOR", "<font color='{option}'>{param}</font>", true);
addBBCode("SIZE", "<font size='{option}'>{param}</font>", true);
addBBCode("FONT", "<font face='{option}'>{param}</font>", true);
addBBCode("HIGHLIGHT", "<span class='highlighted'>{param}</span>", false);
addBBCode("LEFT", "<div align='left'>{param}</div>", false);
addBBCode("RIGHT", "<div align='right'>{param}</div>", false);
addBBCode("CENTER", "<div align='center'>{param}</div>", false);
addBBCode("JUSTIFY", "<div align='justify'>{param}</div>", false);
addBBCode("EMAIL", "<a href='mailto:{param}'>{param}</a>", false);
addBBCode("EMAIL", "<a href='mailto:{option}'>{param}</a>", true);
addBBCode("URL", "<a target='_blank' href='{param}'>{param}</a>", false);
addBBCode("URL", "<a target='_blank' href='{option}'>{param}</a>", true);
addBBCode("GOTO", "<a href='{option}'>{param}</a>", true);
addBBCode("LIST", "", false);
addBBCode("LIST", "", true);
addBBCode("IMG", "<img border='0' alt='' src='{param}' class='inlineimg'/>", false);
addBBCode("QUOTE", "<blockquote>{param}</blockquote>", false);
addBBCode("QUOTE", "<blockquote cite='{option}'>param</blockquote>", true);
addBBCode("CSS", "<span class='{option}'>{param}</span>", true);
}
private void addBBCode(String tag, String replacement, boolean option) {
replacement = replacement.replaceAll("'", "\"");
BBCode bbCode = new BBCode();
String id = option ? (tag + "=") : tag;
bbCode.setTagName(tag);
bbCode.setId(id);
bbCode.setReplacement(replacement);
bbCode.setOption(option);
bbCode.setActive(true); // useless
super.put(id, bbCode);
}
public BBCode getBBCode(String tagName) {
return get(tagName);
}
public Collection<String> getSupportedBBCodes() {
return keySet();
}
}