Skip to content

Instantly share code, notes, and snippets.

@aslakknutsen
Created March 7, 2014 23:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aslakknutsen/9422137 to your computer and use it in GitHub Desktop.
Save aslakknutsen/9422137 to your computer and use it in GitHub Desktop.
AsciidoctorJ issues with Inner Extension classes
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)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment