6

Java を使用して、Mylyn Wiki でサポートされている形式から HTML への変換をコーディングしたいと考えています。Java を使用して Mylyn WikiText のコードを作成する方法を示す役立つオンラインの例は見つかりませんでした。このページは Eclipseでしか見つかりませんでしたが、Ant を使用しています。サンプルコードをリクエストします。

4

1 に答える 1

8

Ant スクリプトをコーディングして Java から起動することはいつでもできますが、以下は私が作成したばかりの完全なユーティリティ クラスです。これにより、WikiText スタンドアロン展開に登録されているさまざまなコア言語を介して Wiki テキストを変換できます。

最も簡単な方法は、 Standalone Deployment をダウンロードして展開し、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(ほぼすべてのマークアップに 1 つある: TextileDocumentBuilderConfluenceDocumentBuilderなど) が含まれます。

その他のウィキテキスト リンク:

于 2013-05-15T16:18:40.507 に答える