All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.cukedoctor.extension.CukedoctorThemeExtension Maven / Gradle / Ivy

There is a newer version: 3.9.0
Show newest version
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" + "