From ec5ec25f278b855e9364e204a9ff905812531d25 Mon Sep 17 00:00:00 2001 From: Sylvain Jermini Date: Mon, 1 Jun 2015 22:46:46 +0200 Subject: [PATCH] fix include-all bug when the file is at depth 0, export depth in pagination object, update todo, remove unused locale aware wrapping if we are using only one locale --- TODO.txt | 5 ++++- .../stampo/processor/IncludeAllPaginator.java | 17 ++++++++++++----- .../stampo/processor/ResourceProcessor.java | 6 ++++++ .../stampo/processor/includeall/Pagination.java | 8 +++++++- .../includeall/StructuredDocument.java | 2 +- .../stampo/processor/includeall/Toc.java | 2 +- 6 files changed, 31 insertions(+), 9 deletions(-) diff --git a/TODO.txt b/TODO.txt index 6c67abc..1c06b81 100644 --- a/TODO.txt +++ b/TODO.txt @@ -11,7 +11,10 @@ TODO: - support a "documentation use case". WIP: - TBD: - tests - + - export a breadcrumb variable (should contain link + document title) + - export a start number variable for OL http://stackoverflow.com/a/779052 so the numbers are coherent + with the main ToC (/!\ some possible issue when there is no attached document with a directory) + - see http://www.mkdocs.org/ - we want to generate something like http://docs.jboss.org/seam/3/latest/reference/en-US/html/ diff --git a/src/main/java/ch/digitalfondue/stampo/processor/IncludeAllPaginator.java b/src/main/java/ch/digitalfondue/stampo/processor/IncludeAllPaginator.java index b3ccd47..254a591 100644 --- a/src/main/java/ch/digitalfondue/stampo/processor/IncludeAllPaginator.java +++ b/src/main/java/ch/digitalfondue/stampo/processor/IncludeAllPaginator.java @@ -86,10 +86,17 @@ public List generateOutputPaths(FileResource resource, Loc throw new IllegalArgumentException(p + " must be inside of the basedirectory: " + baseDirectory);// cannot be outside } - - Directory toIncludeAllDir = - new LocaleAwareDirectory(locale, new RootResource(resourceFactory, p), - FileResourceWithMetadataSection::new); + + + + final Directory toIncludeAllDir; + + if(configuration.getLocales().size() > 1) { + toIncludeAllDir = new LocaleAwareDirectory(locale, new RootResource(resourceFactory, p), + FileResourceWithMetadataSection::new); + } else { + toIncludeAllDir = new RootResource(resourceFactory, p); + } StructuredDocument doc = new StructuredDocument(0, toIncludeAllDir, p); @@ -137,7 +144,7 @@ private void addPaginationInfoToModel(List res) { nextPageUrl = PathUtils.relativePathTo(res.get(i + 1).path, current.path); nextPageTitle = res.get(i + 1).title.orElse(null); } - current.model.put("pagination", new Pagination(i + 1, resCount, previousPageUrl, + current.model.put("pagination", new Pagination(i + 1, resCount, current.depth, previousPageUrl, previousPageTitle, nextPageUrl, nextPageTitle)); current.model.put("toc", current.tocRoot.toHtml(current.path)); } diff --git a/src/main/java/ch/digitalfondue/stampo/processor/ResourceProcessor.java b/src/main/java/ch/digitalfondue/stampo/processor/ResourceProcessor.java index 5e7e277..e2aa105 100644 --- a/src/main/java/ch/digitalfondue/stampo/processor/ResourceProcessor.java +++ b/src/main/java/ch/digitalfondue/stampo/processor/ResourceProcessor.java @@ -87,6 +87,12 @@ public void process(FileResource resource, Locale locale, ProcessedInputHandler Path defaultOutputPath = extractOutputPath(resource); + + if(!directives.containsKey(metadata.getDirective())) { + throw new IllegalArgumentException("Directive '" + metadata.getDirective() + "' in file " + + resource.getPath() + " does not exists"); + } + List outputPaths = directives.get(metadata.getDirective()).generateOutputPaths(resource, finalLocale, defaultOutputPath); diff --git a/src/main/java/ch/digitalfondue/stampo/processor/includeall/Pagination.java b/src/main/java/ch/digitalfondue/stampo/processor/includeall/Pagination.java index 1cc1c82..d08d078 100644 --- a/src/main/java/ch/digitalfondue/stampo/processor/includeall/Pagination.java +++ b/src/main/java/ch/digitalfondue/stampo/processor/includeall/Pagination.java @@ -18,15 +18,17 @@ public class Pagination { private final int page; private final int total; + private final int depth; private final String previousPageUrl; private final String previousPageTitle; private final String nextPageUrl; private final String nextPageTitle; - public Pagination(int page, int total, String previousPageUrl, String previousPageTitle, + public Pagination(int page, int total, int depth, String previousPageUrl, String previousPageTitle, String nextPageUrl, String nextPageTitle) { this.page = page; this.total = total; + this.depth = depth; this.previousPageUrl = previousPageUrl; this.previousPageTitle = previousPageTitle; this.nextPageUrl = nextPageUrl; @@ -40,6 +42,10 @@ public int getPage() { public int getTotal() { return total; } + + public int getDepth() { + return depth; + } public String getPreviousPageUrl() { return previousPageUrl; diff --git a/src/main/java/ch/digitalfondue/stampo/processor/includeall/StructuredDocument.java b/src/main/java/ch/digitalfondue/stampo/processor/includeall/StructuredDocument.java index 30a2fe7..d78d7b1 100644 --- a/src/main/java/ch/digitalfondue/stampo/processor/includeall/StructuredDocument.java +++ b/src/main/java/ch/digitalfondue/stampo/processor/includeall/StructuredDocument.java @@ -71,7 +71,7 @@ public void toOutputPaths(OutputPathsEnv env, List FileResource v = fileResource.orElseGet(() -> new FileResourcePlaceHolder(relativeToBasePath, env.configuration)); - Path virtualPath = env.resource.getPath().getParent().resolve(this.relativeToBasePath.toString()); + Path virtualPath = depth == 0 ? env.resource.getPath() : env.resource.getPath().getParent().resolve(this.relativeToBasePath.toString()); FileResource virtualResource = new VirtualPathFileResource(virtualPath, v); Path finalOutputPathForResource = env.outputPathExtractor.apply(virtualResource); diff --git a/src/main/java/ch/digitalfondue/stampo/processor/includeall/Toc.java b/src/main/java/ch/digitalfondue/stampo/processor/includeall/Toc.java index a09df20..a671938 100644 --- a/src/main/java/ch/digitalfondue/stampo/processor/includeall/Toc.java +++ b/src/main/java/ch/digitalfondue/stampo/processor/includeall/Toc.java @@ -50,7 +50,7 @@ public String toHtml(Path path) { } sb.append("
  • ").append("").append(h.name).append("").append("
  • "); + .append("\">").append(h.name).append(""); } for (int i = 0; i < opened; i++) {