package net.thucydides.core.reports.renderer;
import org.apache.commons.io.IOUtils;
import org.asciidoctor.Asciidoctor;
import org.asciidoctor.Attributes;
import org.asciidoctor.Options;
import static org.asciidoctor.Asciidoctor.Factory.create;
public class AsciidocMarkupRenderer implements MarkupRenderer {
Asciidoctor asciidoctor;
public AsciidocMarkupRenderer() {}
private Asciidoctor getAsciidoctor() {
if (asciidoctor == null) {
asciidoctor = create();
}
return asciidoctor;
}
@Override
public String render(String text) {
return getAsciidoctor().render(addAsciidocLineBreaks(text), getOptions());
}
public String addAsciidocLineBreaks(final String text) {
return (text != null) ?
text.replaceAll(IOUtils.LINE_SEPARATOR_WINDOWS, " +" + IOUtils.LINE_SEPARATOR_WINDOWS)
.replaceAll(IOUtils.LINE_SEPARATOR_UNIX, " +" + IOUtils.LINE_SEPARATOR_UNIX) : "";
}
private Options getOptions() {
Options options = new Options();
options.setCompact(true);
options.setDocType("inline");
Attributes attributes = new Attributes();
attributes.setExperimental(true);
attributes.setDataUri(true);
options.setAttributes(attributes);
return options;
}
}