
Несколько полезных ссылок:
- Домашняя страница проекта gwtwiki. Java Wikipedia API (Bliki engine).
- Захотелось попробовать, пожалуста - http://w-i-k-i.appspot.com/
API очень простое, но вот документация скудновата. Так как код написан хорошо, то заглянув в исходники, можно разобраться с любым функционалом. Хочу сэкономить ваше время и раcказать как быстро расширить движок своими wiki тегами.
Создание Wiki тег
Основой для моего wiki тега возьму NowikiTag. Все что вам нужно, так это переопределить метод renderHTML.
import info.bliki.htmlcleaner.TagNode;
import info.bliki.wiki.filter.ITextConverter;
import info.bliki.wiki.model.IWikiModel;
import info.bliki.wiki.tags.NowikiTag;
import java.io.IOException;
import java.util.Map;
public class MyTag extends NowikiTag {
public MyTag(){
super("my");
}
@Override
public void renderHTML(ITextConverter converter, Appendable buf, IWikiModel model) throws IOException {
TagNode node = this;
//Список атрибутов, которые присутствуют в теге
Map<String, String> tagAtttributes = node.getAttributes();
//Контент, который находится внутри тега
String content = getBodyString();
buf.append('<p>My wiki tag.</p>');
buf.append('\n');
buf.append('<p>'+content</p>);
buf.append('\n');
}
@Override
public boolean isReduceTokenStack() {
return true;
}
}
Для того чтобы движок использовал наш wiki тег, необходимо его добавить в конфигурацию. Пишем наш класс конфигурации.
import info.bliki.wiki.addon.model.AddonConfiguration;
public class MyConfiguration extends AddonConfiguration {
static {
TAG_TOKEN_MAP.put("my", new MyTag());
}
public static MyConfiguration DEFAULT_CONFIGURATION = new MyConfiguration();
public MyConfiguration() {
}
}
Преобразование wiki разметки в html
Все кирпичики готовы, теперь можно использовать:
import info.bliki.wiki.model.WikiModel;
import info.bliki.wiki.model.Configuration;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
WikiModel wikiModel =
new WikiModel(new MyConfiguration(), "http://www.mywiki.com/wiki/${image}", "http://www.mywiki.com/wiki/${title}");
String htmlStr = wikiModel.render("This is a simple [[Hello World]] <my>Wow!</my>");
System.out.print(htmlStr);
}
}
Вот и вся магия :).
1 коммент.: