summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYuxuan 'fishy' Wang <fishywang@google.com>2013-10-17 09:36:33 -0700
committerDavid Pursehouse <david.pursehouse@sonymobile.com>2013-10-18 01:28:23 +0000
commita487b6cf87fc1dbaec2226911dd67f8385e9a284 (patch)
treea35051c18986dad7ac9b3977c72cea9d4181b00f
parent86fcd77c444acaedc4e5fca311365637716c3ead (diff)
Make the documentation embedding work.
-rw-r--r--Documentation/asciidoc.defs3
-rw-r--r--lib/asciidoctor/java/AsciiDoctor.java22
2 files changed, 17 insertions, 8 deletions
diff --git a/Documentation/asciidoc.defs b/Documentation/asciidoc.defs
index e2de7858cc..44313d285b 100644
--- a/Documentation/asciidoc.defs
+++ b/Documentation/asciidoc.defs
@@ -23,6 +23,7 @@ def genasciidoc(
EXPN = '.expn'
asciidoc = [
+ 'cd $SRCDIR;',
'$(exe //lib/asciidoctor:asciidoc)',
'-z', '$OUT',
'--in-ext', '".txt%s"' % EXPN,
@@ -33,7 +34,7 @@ def genasciidoc(
for attribute in attributes:
asciidoc.extend(['-a', attribute])
asciidoc.append('$SRCS')
- newsrcs = []
+ newsrcs = ["doc.css"]
newdeps = deps + ['//lib/asciidoctor:asciidoc']
for src in srcs:
diff --git a/lib/asciidoctor/java/AsciiDoctor.java b/lib/asciidoctor/java/AsciiDoctor.java
index a5bf4926ae..0613ff4e5d 100644
--- a/lib/asciidoctor/java/AsciiDoctor.java
+++ b/lib/asciidoctor/java/AsciiDoctor.java
@@ -29,6 +29,7 @@ import org.asciidoctor.Asciidoctor;
import org.asciidoctor.AttributesBuilder;
import org.asciidoctor.Options;
import org.asciidoctor.OptionsBuilder;
+import org.asciidoctor.SafeMode;
import org.asciidoctor.internal.JRubyAsciidoctor;
import org.kohsuke.args4j.Argument;
@@ -75,15 +76,16 @@ public class AsciiDoctor {
return basename + outExt;
}
- private Options createOptions(File tmpFile) {
+ private Options createOptions(File outputFile) {
OptionsBuilder optionsBuilder = OptionsBuilder.options();
- optionsBuilder.backend(backend).docType(DOCTYPE).eruby(ERUBY);
+ optionsBuilder.backend(backend).docType(DOCTYPE).eruby(ERUBY)
+ .safe(SafeMode.UNSAFE);
// XXX(fishywang): ideally we should just output to a string and add the
// content into zip. But asciidoctor will actually ignore all attributes if
// not output to a file. So we *have* to output to a file then read the
// content of the file into zip.
- optionsBuilder.toFile(tmpFile);
+ optionsBuilder.toFile(outputFile);
AttributesBuilder attributesBuilder = AttributesBuilder.attributes();
attributesBuilder.attributes(getAttributes());
@@ -127,12 +129,18 @@ public class AsciiDoctor {
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream(zipFile));
for (String inputFile : inputFiles) {
- File tmp = File.createTempFile("doc", ".html");
- Options options = createOptions(tmp);
+ if (!inputFile.endsWith(inExt)) {
+ // We have to use UNSAFE mode in order to make embedding work. But in
+ // UNSAFE mode we'll also need css file in the same directory, so we
+ // have to add css files into the SRCS.
+ continue;
+ }
+ String outName = mapInFileToOutFile(inputFile, inExt, outExt);
+ File out = new File(outName);
+ Options options = createOptions(out);
renderInput(options, inputFile);
- String outputFile = mapInFileToOutFile(inputFile, inExt, outExt);
- zipFile(tmp, outputFile, zip);
+ zipFile(out, outName, zip);
}
zip.close();
}