diff --git a/jbake-core/src/main/java/org/jbake/app/DebugUtil.java b/jbake-core/src/main/java/org/jbake/app/DebugUtil.java index 001169930..2ade26e70 100644 --- a/jbake-core/src/main/java/org/jbake/app/DebugUtil.java +++ b/jbake-core/src/main/java/org/jbake/app/DebugUtil.java @@ -1,11 +1,26 @@ package org.jbake.app; import java.io.PrintStream; +import java.sql.SQLOutput; import java.util.Map; +import org.apache.commons.lang.StringUtils; public class DebugUtil { - public static void printMap(Map map, PrintStream printStream){ + public static void printMap(String label, Map map, PrintStream printStream){ + if (null == map) { + printStream.println("The Map is null."); + return; + } + + if (null == printStream) { + printStream = System.out; + return; + } + if (!StringUtils.isBlank(label)) { + printStream.println(label + ":"); + } + printStream.println(); for (Map.Entry entry: map.entrySet()) { printStream.println(entry.getKey() + " :: " + entry.getValue()); diff --git a/jbake-core/src/main/java/org/jbake/app/Oven.java b/jbake-core/src/main/java/org/jbake/app/Oven.java index c96614127..14b29cf09 100644 --- a/jbake-core/src/main/java/org/jbake/app/Oven.java +++ b/jbake-core/src/main/java/org/jbake/app/Oven.java @@ -140,13 +140,11 @@ public void bake() { // render content renderContent(); - { - // copy assets - asset.copy(); - asset.copyAssetsFromContent(config.getContentFolder()); + // copy assets + asset.copy(); + asset.copyAssetsFromContent(config.getContentFolder()); - errors.addAll(asset.getErrors()); - } + errors.addAll(asset.getErrors()); LOGGER.info("Baking finished!"); long end = new Date().getTime(); diff --git a/jbake-core/src/main/java/org/jbake/parser/MarkupEngine.java b/jbake-core/src/main/java/org/jbake/parser/MarkupEngine.java index 725d60a63..f5594c99b 100644 --- a/jbake-core/src/main/java/org/jbake/parser/MarkupEngine.java +++ b/jbake-core/src/main/java/org/jbake/parser/MarkupEngine.java @@ -124,9 +124,10 @@ public Map parse(JBakeConfiguration config, File file) { hasHeader); Map headersMap = parseHeaderBlock(context); - DebugUtil.printMap(headersMap, System.out); + DebugUtil.printMap("Headers of " + file, headersMap, System.out); - applyHeadersToDocument(headersMap, context.getDocumentModel()); + if (headersMap != null) + applyHeadersToDocument(headersMap, context.getDocumentModel()); setModelDefaultsIfNotSetInHeader(context); sanitizeTags(context); @@ -212,7 +213,14 @@ private boolean hasHeader(List fileLines) /** - * Process the header of the file. + * Parse the headers of the file being parsed in given context. + * + * This method should parse the headers and return them for further processing. + * Otherwise the implementation may opt to apply the headers to the document itself and return null. + * + * TODO: The processing should be flatter in general, IMHO. + * Rather than nesting X levels deep to process a document, config overlays, an index, etc., + * the code blocks should pass packages of information around. Otherwise making JBake pluggable would be harder. * * @param context the parser context */