
com.github.cukedoctor.extension.CukedoctorThemeExtension Maven / Gradle / Ivy
package com.github.cukedoctor.extension;
import static com.github.cukedoctor.extension.CukedoctorExtensionRegistry.*;
import com.github.cukedoctor.extension.util.FileUtil;
import org.asciidoctor.ast.Document;
import org.asciidoctor.extension.Postprocessor;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element;
import java.io.File;
import java.util.Map;
/**
* Created by pestano on 20/07/15.
* adds search box to rendered html documentation
*/
public class CukedoctorThemeExtension extends Postprocessor {
public CukedoctorThemeExtension(Map config) {
super(config);
}
@Override
public String process(Document document, String output) {
if (document.basebackend("html") && System.getProperty(THEME_DISABLE_EXT_KEY) == null) {
Object docDir = document.getAttributes().get("docdir");
if (docDir != null && new File(docDir.toString()).exists()) {
File themeDir = new File(docDir.toString() + "/themes/");
boolean created = false;
created = themeDir.mkdir();
if (created) {
FileUtil.copyFile("/themes/colony.css", docDir + "/themes/colony.css");
FileUtil.copyFile("/themes/foundation.css", docDir + "/themes/foundation.css");
FileUtil.copyFile("/themes/rubygems.css", docDir + "/themes/rubygems.css");
FileUtil.copyFile("/themes/iconic.css", docDir + "/themes/iconic.css");
FileUtil.copyFile("/themes/readthedocs.css", docDir + "/themes/readthedocs.css");
FileUtil.copyFile("/themes/rocket-panda.css", docDir + "/themes/rocket-panda.css");
FileUtil.copyFile("/themes/maker.css", docDir + "/themes/maker.css");
FileUtil.copyFile("/themes/github.css", docDir + "/themes/github.css");
}
}
org.jsoup.nodes.Document doc = Jsoup.parse(output, "UTF-8");
Object tocPosition = document.document().getAttributes().get("toc-position");
boolean isTocRight = tocPosition != null && tocPosition.toString().equalsIgnoreCase("right");
Element contentElement = doc.getElementsByAttributeValue("id", "header").get(0);
contentElement.before("Theme: \n" +
"\n" +
"");
return doc.html();
} else {
return output;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy