import java.util.*;
import java.io.*;
class BBConverter {
public static void main(String[] args) throws Exception {
String file = args[0];
String bbcode = read(file);
String html = bbcode(bbcode);
BufferedWriter out = new BufferedWriter(new FileWriter("html.html"));
out.write(html);
out.close();
}
public static String read(String file) {
try {
File f = new File(file);
Scanner scan = new Scanner(f);
scan.useDelimiter("\\Z");
String content = scan.next();
return content;
} catch(FileNotFoundException e) {
System.out.println("Datei nicht gefunden.");
return "";
}
}
/**
* Converts bbcode to html.
* Source: http://fyhao.com/2010/06/computer-and-it/java/simple-java-bbcode-implementation/
*/
public static String bbcode(String text) {
String html = "<html><body bgcolor=\"#000000\">" + text + "</body></html>";
Map<String,String> bbMap = new HashMap<String , String>();
bbMap.put("((\r\n|\r|\n|\n\r))", "<br/>$1");
bbMap.put("\\[[bB]\\]", "<b>");
bbMap.put("\\[/[bB]\\]", "</b>");
bbMap.put("\\[[sS][iI][zZ][eE]\\=(.+?)\\]", "<font size=\"$1\">");
bbMap.put("\\[/[sS][iI][zZ][eE]\\]", "</font>");
bbMap.put("\\[[iI]\\](.+?)\\[/[iI]\\]",
"<span style='font-style:italic;'>$1</span>");
bbMap.put("\\[[uU]\\](.+?)\\[/[uU]\\]",
"<span style='text-decoration:underline;'>$1</span>");
bbMap.put("\\[[cC][eE][nN][tT][eE][rR]\\]", "<div align='center'>");
bbMap.put("(.+?)\\[/[cC][eE][nN][tT][eE][rR]\\]", "</div>");
bbMap.put("\\[[iI][mM][gG]\\](.+?)\\[/[iI][mM][gG]\\]",
"<img src='$1' />");
bbMap.put("\\[[iI][mM][gG]=(.+?),(.+?)\\](.+?)\\[/[iI][mM][gG]\\]",
"<img width='$1' height='$2' src='$3' />");
bbMap.put("\\[[cC][oO][lL][oO][rR]=(.+?)\\]",
"<span style='color:$1;'>");
bbMap.put("\\[/[cC][oO][lL][oO][rR]\\]", "</span>");
bbMap.put("\\[[qQ][uU][oO][tT][eE]\\]", "<blockquote>");
bbMap.put("\\[/[qQ][uU][oO][tT][eE]\\]", "</blockquote>");
bbMap.put("\\[[aA][nN][kK][eE][rR]=(.+?)\\]", "<a name=\"$1\">");
bbMap.put("\\[/[aA][nN][kK][eE][rR]\\]", "</a>");
bbMap.put("\\[[uU][nN][iI][qQ][uU][eE]\\](.+?)\\[/[uU][nN][iI][qQ][uU][eE]\\]",
"<a rel=\"nofollow\" href=\"http://planetdiablo.eu/spiel/expansion/itemdb/uniquesearch.php?text=$1\" target=\"_blank\"><font color=\"#908858\"><u>$1</u></font></a>");
bbMap.put("\\[[hH][iI][gG][hH][lL][iI][gG][hH][tT]\\]",
"<span class=\"highlight\">");
bbMap.put("\\[/[hH][iI][gG][hH][lL][iI][gG][hH][tT]\\]", "</span>");
bbMap.put("\\[[sS][eE][tT]\\](.+?)\\[/[sS][eE][tT]\\]",
"<a rel=\"nofollow\" href=\"http://planetdiablo.eu/spiel/expansion/itemdb/setsearch.php?text=$1\" target=\"_blank\"><font color=\"#00C400\"><u>$1</u></font></a>");
bbMap.put("\\[[uU][rR][lL]=(.+?)\\](.+?)\\[/[uU][rR][lL]\\]",
"<a href='$1'>$2</a>");
for (Map.Entry entry: bbMap.entrySet()) {
html = html.replaceAll(entry.getKey().toString(), entry.getValue().toString());
}
return html;
}
}