protected void setAttributesOnBuilder(AttributesBuilder attributesBuilder) throws MojoExecutionException { if (sourceHighlighter != null) { attributesBuilder.sourceHighlighter(sourceHighlighter); } if (embedAssets) { attributesBuilder.linkCss(false); attributesBuilder.dataUri(true); } if (imagesDir != null) { attributesBuilder.imagesDir(imagesDir); } if ("skip".equals(attributeMissing) || "drop".equals(attributeMissing) || "drop-line".equals(attributeMissing)) { attributesBuilder.attributeMissing(attributeMissing); } else { throw new MojoExecutionException(attributeMissing + " is not valid. Must be one of 'skip', 'drop' or 'drop-line'"); } if ("drop".equals(attributeUndefined) || "drop-line".equals(attributeUndefined)) { attributesBuilder.attributeUndefined(attributeUndefined); } else { throw new MojoExecutionException(attributeUndefined + " is not valid. Must be one of 'drop' or 'drop-line'"); } AsciidoctorHelper.addAttributes(attributes, attributesBuilder); if (!attributesChain.isEmpty()) { getLog().info("Attributes: " + attributesChain); attributesBuilder.arguments(attributesChain); } }
@Test public void should_be_able_to_read_asset() throws FileNotFoundException { Map<String, Object> options = OptionsBuilder.options().safe(SafeMode.SAFE) .attributes(AttributesBuilder.attributes().dataUri(false)) .compact(true).asMap(); Document document = asciidoctor.load(DOCUMENT, options); File inputFile = classpath.getResource("rendersample.asciidoc"); String content = document.readAsset(inputFile.getAbsolutePath(), new HashMap<Object, Object>()); assertThat(content.replace("\r", ""), is(IOUtils.readFull(new FileReader(inputFile)).replace("\r", ""))); }
@Test public void should_be_able_to_manipulate_attributes() { Map<String, Object> options = OptionsBuilder.options() .attributes(AttributesBuilder.attributes().dataUri(true)) .compact(true).asMap(); Document document = asciidoctor.load(DOCUMENT, options); assertThat(document.getAttributes(), hasKey("toc-placement")); assertThat(document.hasAttribute("toc-placement"), is(true)); assertThat(document.isAttribute("toc-placement", "auto", false), is(true)); assertThat(document.getAttribute("toc-placement", "", false).toString(), is("auto")); }
@Test public void should_be_able_to_get_icon_uri_string_reference() { Map<String, Object> options = OptionsBuilder.options() .attributes(AttributesBuilder.attributes().dataUri(false)) .compact(true).asMap(); Document document = asciidoctor.load(DOCUMENT, options); assertThat(document.iconUri("note"), is("./images/icons/note.png")); }
@Test public void should_be_able_to_get_image_uri() { Map<String, Object> options = OptionsBuilder.options().safe(SafeMode.SAFE) .attributes(AttributesBuilder.attributes().dataUri(false)) .compact(true).asMap(); Document document = asciidoctor.load(DOCUMENT, options); assertThat(document.imageUri("target.jpg"), is("target.jpg")); assertThat(document.imageUri("target.jpg", "imagesdir"), is("target.jpg")); }
@Test public void should_be_able_to_get_icon_uri() { Map<String, Object> options = OptionsBuilder.options().safe(SafeMode.SAFE) .attributes(AttributesBuilder.attributes().dataUri(true).icons("font")) .compact(true).asMap(); Document document = asciidoctor.load(DOCUMENT, options); assertThat(document.iconUri("note"), either( is("data:image/png:base64,") // <= Asciidoctor 1.5.5 ) .or(is("data:image/png;base64,"))); // >= Asciidoctor 1.5.6 }
@Test public void data_uri_gem_should_be_preloaded() { Map<String, Object> options = OptionsBuilder.options() .attributes(AttributesBuilder.attributes().dataUri(true).get()).asMap(); ((JRubyAsciidoctor) asciidoctor).rubyGemsPreloader.preloadRequiredLibraries(options); RubyBoolean evalScriptlet = (RubyBoolean) ((JRubyAsciidoctor) asciidoctor).rubyRuntime.evalScriptlet("require 'base64'"); assertThat(evalScriptlet.isFalse(), is(true)); }