AsciiDocCompiler.java
package pro.verron.officestamper.asciidoc;
import javafx.scene.Scene;
import org.docx4j.openpackaging.packages.WordprocessingMLPackage;
/// Facade utilities to parse AsciiDoc and compile it to different targets.
public final class AsciiDocCompiler {
static {
System.setProperty("jruby.compat.version", "RUBY1_9");
System.setProperty("jruby.compile.mode", "OFF");
}
private AsciiDocCompiler() {
}
/// Compiles the AsciiDoc source text directly to a WordprocessingMLPackage.
///
/// @param asciidoc source text
///
/// @return package with rendered content
public static WordprocessingMLPackage toDocx(String asciidoc) {
return toDocx(toAsciiModel(asciidoc));
}
/// Compiles the parsed model to a WordprocessingMLPackage.
///
/// @param model parsed model
///
/// @return package with rendered content
public static WordprocessingMLPackage toDocx(AsciiDocModel model) {
return AsciiDocToDocx.compileToPackage(model);
}
/// Parses AsciiDoc source text into an [AsciiDocModel].
///
/// @param asciidoc source text
///
/// @return parsed model
public static AsciiDocModel toAsciiModel(String asciidoc) {
return AsciiDocParser.parse(asciidoc);
}
/// Compiles the AsciiDoc source text directly to a JavaFX Scene.
///
/// @param asciidoc source text
///
/// @return scene with rendered content
public static Scene toScene(String asciidoc) {
return toScene(toAsciiModel(asciidoc));
}
/// Compiles the parsed model to a JavaFX Scene.
///
/// @param model parsed model
///
/// @return scene with rendered content
public static Scene toScene(AsciiDocModel model) {
return AsciiDocToFx.compileToScene(model);
}
/// Compiles a WordprocessingMLPackage into the textual AsciiDoc representation used by tests. This mirrors the
/// legacy Stringifier output to preserve expectations.
///
/// @param pkg a Word document package
///
/// @return textual representation
public static String toAsciiDoc(WordprocessingMLPackage pkg) {
return DocxToAsciiDoc.compile(pkg, AsciiDocDialect.COMPAT);
}
/// Compiles a WordprocessingMLPackage into AsciiDoc using the specified dialect.
///
/// @param pkg a Word document package
/// @param dialect output dialect (compat or adoc)
///
/// @return textual representation
public static String toAsciiDoc(WordprocessingMLPackage pkg, AsciiDocDialect dialect) {
return DocxToAsciiDoc.compile(pkg, dialect);
}
}