Doc: handle anchor tag and check for doubloons 24/17524/3
Calixte DENIZET [Wed, 2 Dec 2015 11:22:48 +0000 (12:22 +0100)]
Change-Id: I3f58482e2f4373557bfab32f4e97344dc8eea9c4

scilab/modules/helptools/src/java/org/scilab/modules/helptools/DocbookTagConverter.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/HTMLDocbookLinkResolver.java
scilab/modules/helptools/src/java/org/scilab/modules/helptools/HTMLDocbookTagConverter.java

index be50ae1..b38ae86 100644 (file)
@@ -662,4 +662,5 @@ public abstract class DocbookTagConverter extends DefaultHandler implements Conv
     public abstract String handleVarname(final Map<String, String> attributes, final String contents) throws SAXException;
     public abstract String handleWarning(final Map<String, String> attributes, final String contents) throws SAXException;
     public abstract String handleXref(final Map<String, String> attributes, final String contents) throws SAXException;
+    public abstract String handleAnchor(final Map<String, String> attributes, final String contents) throws SAXException;
 }
index 2ac5569..e6b05d7 100644 (file)
@@ -188,6 +188,12 @@ public class HTMLDocbookLinkResolver extends DefaultHandler {
             currentLeaf.add(leaf);
             currentLeaf = leaf;
         } else if (id != null && current != null) {
+            if (mapIdDeclaringFile.containsKey(id)) {
+                String prev = mapIdDeclaringFile.get(id);
+                throw new SAXException("The id " + id + " in file " + currentFileName + " was previously declared in " + prev);
+            } else {
+                mapIdDeclaringFile.put(id, currentFileName);
+            }
             mapId.put(id, current + "#" + id);
         }
     }
index 3fa6ba2..a4d6e8e 100644 (file)
@@ -1019,6 +1019,22 @@ public class HTMLDocbookTagConverter extends DocbookTagConverter implements Temp
     }
 
     /**
+     * Handle an anchor
+     * @param attributes the tag attributes
+     * @param contents the tag contents
+     * @return the HTML code
+     * @throws SAXEception if an error is encountered
+     */
+    public String handleAnchor(final Map<String, String> attributes, final String contents) throws SAXException {
+        String id = attributes.get("id");
+        if (id != null) {
+            return "<a name=\"" + id + "\">" + contents + "</a>";
+        } else {
+            return contents;
+        }
+    }
+
+    /**
      * Handle a progamlisting
      * @param attributes the tag attributes
      * @param contents the tag contents