You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by dd...@apache.org on 2017/01/06 11:41:44 UTC

incubator-freemarker-docgen git commit: Fix: Docgen hangs in simpleNavigationMode if a section only contains further sections which should be displayed in the same file.

Repository: incubator-freemarker-docgen
Updated Branches:
  refs/heads/master d4d082b22 -> 7bc7b3abf


Fix: Docgen hangs in simpleNavigationMode if a section only contains further sections which should be displayed in the same file.

Some other cleanup.


Project: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/commit/7bc7b3ab
Tree: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/tree/7bc7b3ab
Diff: http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/diff/7bc7b3ab

Branch: refs/heads/master
Commit: 7bc7b3abfb0e6493271b1390d9cfea5ff3c560e2
Parents: d4d082b
Author: ddekany <dd...@apache.org>
Authored: Fri Jan 6 12:41:43 2017 +0100
Committer: ddekany <dd...@apache.org>
Committed: Fri Jan 6 12:41:43 2017 +0100

----------------------------------------------------------------------
 .../freemarker/docgen/DocBook5Constants.java    |  4 +--
 src/main/org/freemarker/docgen/Transform.java   | 38 ++++++++------------
 2 files changed, 16 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/blob/7bc7b3ab/src/main/org/freemarker/docgen/DocBook5Constants.java
----------------------------------------------------------------------
diff --git a/src/main/org/freemarker/docgen/DocBook5Constants.java b/src/main/org/freemarker/docgen/DocBook5Constants.java
index df0cb83..1f8b083 100644
--- a/src/main/org/freemarker/docgen/DocBook5Constants.java
+++ b/src/main/org/freemarker/docgen/DocBook5Constants.java
@@ -123,7 +123,7 @@ final class DocBook5Constants {
      * Elements that directly generates visible artifacts on the page and
      * occur directly under document-structural elements.
      */
-    public static final Set<String> VISIBLE_TOPLEVEL_ELEMENTS;
+    public static final Set<String> VISIBLE_TOP_LEVEL_ELEMENTS;
     static {
         HashSet<String> visibleTopLevelElems = new HashSet<String>();
 
@@ -143,7 +143,7 @@ final class DocBook5Constants {
         visibleTopLevelElems.add(E_NOTE);
         visibleTopLevelElems.add(E_WARNING);
 
-        VISIBLE_TOPLEVEL_ELEMENTS = Collections.unmodifiableSet(
+        VISIBLE_TOP_LEVEL_ELEMENTS = Collections.unmodifiableSet(
                 visibleTopLevelElems);
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-freemarker-docgen/blob/7bc7b3ab/src/main/org/freemarker/docgen/Transform.java
----------------------------------------------------------------------
diff --git a/src/main/org/freemarker/docgen/Transform.java b/src/main/org/freemarker/docgen/Transform.java
index 5dc1d6f..698bfb2 100644
--- a/src/main/org/freemarker/docgen/Transform.java
+++ b/src/main/org/freemarker/docgen/Transform.java
@@ -45,7 +45,7 @@ import static org.freemarker.docgen.DocBook5Constants.E_SIMPLESECT;
 import static org.freemarker.docgen.DocBook5Constants.E_SUBTITLE;
 import static org.freemarker.docgen.DocBook5Constants.E_TABLE;
 import static org.freemarker.docgen.DocBook5Constants.E_TITLE;
-import static org.freemarker.docgen.DocBook5Constants.VISIBLE_TOPLEVEL_ELEMENTS;
+import static org.freemarker.docgen.DocBook5Constants.VISIBLE_TOP_LEVEL_ELEMENTS;
 import static org.freemarker.docgen.DocBook5Constants.XMLNS_DOCBOOK5;
 import static org.freemarker.docgen.DocBook5Constants.XMLNS_XLINK;
 
@@ -589,8 +589,6 @@ public final class Transform {
             = SETTING_NUMBERED_SECTIONS;
     private static final String VAR_INDEX_ENTRIES
             = "indexEntries";
-    private static final String VAR_STARTS_WITH_TOP_LEVEL_CONTENT
-            = "startsWithTopLevelContent";
     private static final String VAR_PAGE_TYPE = "pageType";
     private static final String VAR_ALTERNATIVE_TOC_LINK
             = "alternativeTOCLink";
@@ -2254,8 +2252,9 @@ public final class Transform {
                 // Must do it at the end: We need the docgen_... XML attributes here, and we must be past the
                 // TOC topology checks.
                 for (TOCNode tocNode : tocNodes) {
+                    // Don't generate a file for pages that would only contain a table of contents 
                     if (tocNode.isFileElement()
-                            && (tocNode.getParent() == null || !hasTopLevelContent(tocNode.getElement()))) {
+                            && (tocNode.getParent() == null || !hasContentInTheSameFile(tocNode))) {
                         tocNode.setOutputFileName(null);
                         tocNode.getElement().setAttribute(A_DOCGEN_NOT_ADDRESSABLE, "true");
                     }
@@ -2718,9 +2717,6 @@ public final class Transform {
                 VAR_TOC_DISPLAY_DEPTH,
                 isTheDocumentElement
                         ? maxTOFDisplayDepth : maxMainTOFDisplayDepth);
-        dataModel.put(
-                VAR_STARTS_WITH_TOP_LEVEL_CONTENT,
-                hasTopLevelContent(currentFileTOCNode.getElement()));
 
         if (seoMeta != null) {
             Map<String, String> seoMetaMap = seoMeta.get("file:" + currentFileTOCNode.getOutputFileName());
@@ -2847,33 +2843,26 @@ public final class Transform {
 	    return sum;
 	}
 
-	/**
-     * Checks if a document-structure-element has top-level content.
-     * Top-level content is visible content that is outside the nested
-     * document-structure-element-s that have enough rank to get into the
-     * Page Contents table.
+    /**
+     * Returns if the TOC node contains anything (other than generated content) in the same file where the TOC node
+     * is displayed. 
      */
-    private boolean hasTopLevelContent(Element element) {
-        for (Element elem : XMLUtil.childrenElementsOf(element)) {
+    private boolean hasContentInTheSameFile(TOCNode tocNode) {
+        for (Element elem : XMLUtil.childrenElementsOf(tocNode.getElement())) {
             if (elem.getNamespaceURI().equals(XMLNS_DOCBOOK5)) {
-                if (elem.hasAttribute(A_DOCGEN_FILE_ELEMENT)
-                        || elem.hasAttribute(A_DOCGEN_PAGE_TOC_ELEMENT)) {
-                    return false;
-                }
                 String name = elem.getLocalName();
-                if (!name.equals(E_TITLE) && !name.equals(E_SUBTITLE)
+                if (!elem.hasAttribute(A_DOCGEN_FILE_ELEMENT)
+                        && VISIBLE_TOP_LEVEL_ELEMENTS.contains(name)
+                        && !name.equals(E_TITLE) && !name.equals(E_SUBTITLE)
                         && !name.equals(E_INFO)
                         && !name.equals(E_FOOTNOTE)) {
-                    if (VISIBLE_TOPLEVEL_ELEMENTS.contains(name)) {
-                        return true;
-                    }
+                    return true;
                 }
             }
         }
-
         return false;
     }
-
+    
     private String createElementLinkURL(final Element elem)
             throws DocgenException {
         if (elem.hasAttribute(A_DOCGEN_NOT_ADDRESSABLE)) {
@@ -2913,6 +2902,7 @@ public final class Transform {
                 curElem = (Element) curElem.getParentNode();
             } else {
                 fileName = fileTOCNode.getOutputFileName();
+                if (fileName == null) throw new IllegalStateException("fileTOCNode with null outputFileName");
             }
         } while (fileName == null);