package org.arquillian.forge.howto.aciidoc;
import static org.asciidoctor.Asciidoctor.Factory.create;
import java.io.File;
import java.util.Map;
import javax.enterprise.context.ApplicationScoped;
import org.arquillian.forge.howto.Formatter;
import org.arquillian.forge.howto.HowToItem;
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.OptionsBuilder;
import org.asciidoctor.extension.BlockProcessor;
import org.asciidoctor.internal.Block;
import org.asciidoctor.internal.DocumentRuby;
import org.asciidoctor.internal.Reader;
@ApplicationScoped
public class AsciidoctorFormatter implements Formatter {
private Asciidoctor asciidoctor;
public AsciidoctorFormatter() {
asciidoctor = create();
asciidoctor.extensionRegistry().block("source", ShellExtension.class);
}
@Override
public String format(HowToItem item) {
return asciidoctor.render(
item.getContent(),
OptionsBuilder.options()
.templateDir(new File("src/main/resources/terminal/")));
}
public static class ShellExtension extends BlockProcessor {
public ShellExtension(String context, DocumentRuby documentRuby) {
super(context, documentRuby);
}
@Override
public Object process(Block parent, Reader reader, Map<String, Object> attributes) {
return null;
}
}
}
Casue:
org.jruby.exceptions.RaiseException: (ArgumentError) Java package `org.arquillian.forge.howto.aciidoc' does not have a method `AsciidoctorFormatter'
at RUBY.method_missing(file:/home/aslak/.m2/repository/org/jruby/jruby-complete/1.7.4/jruby-complete-1.7.4.jar!/jruby/java/java_package_module_template.rb:13)
at RUBY.(root)(<script>:1)