有没有使用Mylyn WikiText的Java示例?

6

我想使用Java编写从Mylyn Wiki支持的格式转换为HTML的代码。 我没有找到任何有用的在线示例,演示如何使用Java编写Mylyn WikiText。 我只找到了Eclipse上的这个页面,但它使用Ant。 我请求提供一些示例代码。

1个回答

8

虽然您可以随时使用Ant脚本并从Java中启动它们, 但以下是我刚写的完整实用程序类,它将使您能够通过注册到WikiText独立部署的各种核心语言转换维基文本。

值得注意的是,最简单的方法是下载独立部署包,扩展它并阅读API以了解您需要应用的其他配置。

将WikiText转换为HTML

package com.stackoverflow.mylyn;

import java.io.StringWriter;
import java.util.Set;
import java.util.TreeSet;

import org.eclipse.mylyn.wikitext.core.parser.MarkupParser;
import org.eclipse.mylyn.wikitext.core.parser.builder.HtmlDocumentBuilder;
import org.eclipse.mylyn.wikitext.core.parser.markup.MarkupLanguage;
import org.eclipse.mylyn.wikitext.core.util.ServiceLocator;

/**
 * Utility to parse Wiki Text of varying languages and convert to HTML.
 */
public final class ParseWikiToHTMLUtility {

    public static final String NAME_TEXTILE = "Textile";
    public static final String NAME_TRACWIKI = "TracWiki";
    public static final String NAME_MEDIAWIKI = "MediaWiki";
    public static final String NAME_CONFLUENCE = "Confluence";
    public static final String NAME_TWIKI = "TWiki";

    private ParseWikiToHTMLUtility() {
            /* Do not instantiate utility classes */
    }

    public static String parseTextile(String wikiText) {

            return parseByLanguage(NAME_TEXTILE, wikiText);
    }

    public static String parseTracWiki(String wikiText) {

            return parseByLanguage(NAME_TRACWIKI, wikiText);
    }

    public static String parseMediaWiki(String wikiText) {

            return parseByLanguage(NAME_MEDIAWIKI, wikiText);
    }

    public static String parseConfluence(String wikiText) {

            return parseByLanguage(NAME_CONFLUENCE, wikiText);
    }

    public static String parseTWiki(String wikiText) {

            return parseByLanguage(NAME_TWIKI, wikiText);
    }

    public static String parseByLanguage(String name, String wikiText) {

            return parseByLanguage(ServiceLocator.getInstance().getMarkupLanguage(name), wikiText);
    }

    public static String parseByLanguage(MarkupLanguage language, String wikiText) {

            StringWriter writer = new StringWriter();
            HtmlDocumentBuilder builder = new HtmlDocumentBuilder(writer);
            MarkupParser parser = new MarkupParser(language, builder);
            parser.parse(wikiText);
            return writer.toString();                
    }

    /**
     * MarkupLanguage API prefers we retrieve the MarkupLanguge by name from 
     * the ServiceLocator; since there are no name constants, we obtain the names 
     * from this method or alternately use the hard-coded names from this utility class, 
     * which were pulled directly from a prior call to this very method. 
     */
    public static Set<String> getLanguageNames() {

            Set<String> languages = new TreeSet<String>();
            for (MarkupLanguage s : ServiceLocator.getInstance().getAllMarkupLanguages()) {
                    languages.add(s.getName());
            }

            return languages;
    }        
}

要从HTML转换,请使用HtmlParser.parse()方法。将您的HTML作为InputSource提交,并提供一个DocumentBuilder目标。 DocumentBuilder实现包括XslfoDocumentBuilder(用于XSL-Fo和最终转换为PDF或PostScript),DocBookDocumentBuilder(用于Docbook格式)以及扩展AbstractMarkupDocumentBuilder的类(几乎每种标记都有一个:TextileDocumentBuilderConfluenceDocumentBuilder等)。
其他WikiText链接:

1
http://www.programcreek.com/java-api-examples/index.php?api=org.eclipse.mylyn.wikitext.core.parser.builder.HtmlDocumentBuilder - cleverpig
这里有一个简单的Maven示例(用于Markdown语言):https://gist.github.com/jmini/58f66c1bd5d0203c5f67 - Jmini

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接