Skip to content

Commit

Permalink
resolves asciidoctor#119 honor doctype set in document header
Browse files Browse the repository at this point in the history
- add test to ensure doctype set in document header is honored
- add assertion to verify default doctype is article
- minor code cleanups
  • Loading branch information
mojavelinux committed Dec 14, 2015
1 parent 50922eb commit 04a4953
Show file tree
Hide file tree
Showing 3 changed files with 58 additions and 11 deletions.
31 changes: 20 additions & 11 deletions src/main/java/org/asciidoctor/maven/AsciidoctorMojo.java
Original file line number Diff line number Diff line change
Expand Up @@ -88,8 +88,8 @@ public class AsciidoctorMojo extends AbstractMojo {
@Parameter(property = AsciidoctorMaven.PREFIX + Options.BACKEND, defaultValue = "docbook", required = true)
protected String backend = "";

@Parameter(property = AsciidoctorMaven.PREFIX + Options.DOCTYPE, defaultValue = "article", required = true)
protected String doctype = "article";
@Parameter(property = AsciidoctorMaven.PREFIX + Options.DOCTYPE, required = false)
protected String doctype;

@Parameter(property = AsciidoctorMaven.PREFIX + Options.ERUBY, required = false)
protected String eruby = "";
Expand Down Expand Up @@ -139,6 +139,11 @@ public void execute() throws MojoExecutionException, MojoFailureException {
getLog().info("AsciiDoc processing is skipped.");
return;
}

if (sourceDirectory == null) {
throw new MojoExecutionException("Required parameter 'asciidoctor.sourceDir' not set.");
}

ensureOutputExists();

final Asciidoctor asciidoctorInstance = getAsciidoctorInstance(gemPath);
Expand All @@ -150,20 +155,20 @@ public void execute() throws MojoExecutionException, MojoFailureException {
}
}

final OptionsBuilder optionsBuilder = OptionsBuilder.options().safe(SafeMode.UNSAFE)
.eruby(eruby).backend(backend).docType(doctype).headerFooter(headerFooter).mkDirs(true);

final AttributesBuilder attributesBuilder = AttributesBuilder.attributes();

if (sourceDirectory == null) {
throw new MojoExecutionException("Required parameter 'asciidoctor.sourceDir' not set.");
}
final OptionsBuilder optionsBuilder = OptionsBuilder.options()
.backend(backend)
.safe(SafeMode.UNSAFE)
.headerFooter(headerFooter)
.eruby(eruby)
.mkDirs(true);

setOptions(optionsBuilder);

final AttributesBuilder attributesBuilder = AttributesBuilder.attributes();

setAttributesOnBuilder(attributesBuilder);

optionsBuilder.attributes(attributesBuilder.get());
optionsBuilder.attributes(attributesBuilder);

ExtensionRegistry extensionRegistry = new AsciidoctorJExtensionRegistry(asciidoctorInstance);
for (ExtensionConfiguration extension: extensions) {
Expand Down Expand Up @@ -319,6 +324,10 @@ protected void ensureOutputExists() {
}

protected void setOptions(OptionsBuilder optionsBuilder) {
if (doctype != null) {
optionsBuilder.docType(doctype);
}

if (templateEngine != null) {
optionsBuilder.templateEngine(templateEngine);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ class AsciidoctorMojoTest extends Specification {
AsciidoctorMojo mojo = new AsciidoctorMojo()
mojo.backend = 'html'
mojo.sourceDirectory = srcDir
mojo.sourceDocumentName = 'sample.asciidoc'
mojo.outputDirectory = outputDir
mojo.headerFooter = true
mojo.sourceHighlighter = 'coderay'
Expand All @@ -59,12 +60,38 @@ class AsciidoctorMojoTest extends Specification {
File sampleOutput = new File('sample.html', outputDir)
sampleOutput.length() > 0
String text = sampleOutput.getText()
text.contains('<body class="article">')
text.contains('id="toc"')
text.contains('Asciidoctor default stylesheet')
!text.contains('<link rel="stylesheet" href="./asciidoctor.css">')
text.contains('<pre class="CodeRay highlight">')
}

def "should honor doctype set in document"() {
setup:
File srcDir = new File('target/test-classes/src/asciidoctor')
File outputDir = new File('target/asciidoctor-output')
if (!outputDir.exists())
outputDir.mkdir()
when:
AsciidoctorMojo mojo = new AsciidoctorMojo()
mojo.backend = 'html'
mojo.sourceDirectory = srcDir
mojo.sourceDocumentName = 'book.adoc'
mojo.outputDirectory = outputDir
mojo.headerFooter = true
mojo.attributes['linkcss'] = ''
mojo.attributes['copycss!'] = ''
mojo.execute()
then:
outputDir.list().toList().isEmpty() == false
outputDir.list().toList().contains('book.html')
File sampleOutput = new File('book.html', outputDir)
sampleOutput.length() > 0
String text = sampleOutput.getText()
text.contains('<body class="book">')
}

def "asciidoc file extension can be changed"() {
given: 'an empty output directory'
def outputDir = new File('target/asciidoctor-output')
Expand Down
11 changes: 11 additions & 0 deletions src/test/resources/src/asciidoctor/book.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
= Book
Author Name
:doctype: book

== Chapter 1

content

== Chapter 2

content

0 comments on commit 04a4953

Please sign in to comment.