Put per-letter quicklinks at the top of the HTML bookindex page
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 13 Oct 2010 16:46:05 +0000 (19:46 +0300)
committerPeter Eisentraut <peter_e@gmx.net>
Wed, 13 Oct 2010 16:46:05 +0000 (19:46 +0300)
doc/src/sgml/stylesheet.dsl

index b7cf735d60e64cb1a12d106a5f3327c0d155bc96..3a1c632c903450866b51ee9d78015d9363b8956e 100644 (file)
    (empty-sosofo))))
 
 
+;; Put index "quicklinks" (A | B | C | ...) at the top of the bookindex page.
+
+(element index
+  (let ((preamble (node-list-filter-by-not-gi
+                   (children (current-node))
+                   (list (normalize "indexentry"))))
+        (indexdivs  (node-list-filter-by-gi
+            (children (current-node))
+            (list (normalize "indexdiv"))))
+        (entries  (node-list-filter-by-gi
+                   (children (current-node))
+                   (list (normalize "indexentry")))))
+    (html-document
+     (with-mode head-title-mode
+       (literal (element-title-string (current-node))))
+     (make element gi: "DIV"
+           attributes: (list (list "CLASS" (gi)))
+           ($component-separator$)
+           ($component-title$)
+      (if (node-list-empty? indexdivs)
+          (empty-sosofo)
+          (make element gi: "P"
+            attributes: (list (list "CLASS" "INDEXDIV-QUICKLINKS"))
+            (with-mode indexdiv-quicklinks-mode
+              (process-node-list indexdivs))))
+           (process-node-list preamble)
+           (if (node-list-empty? entries)
+               (empty-sosofo)
+               (make element gi: "DL"
+                     (process-node-list entries)))))))
+
+
+(mode indexdiv-quicklinks-mode
+  (element indexdiv
+    (make sequence
+      (make element gi: "A"
+       attributes: (list (list "HREF" (href-to (current-node))))
+       (element-title-sosofo))
+      (if (not (last-sibling?))
+     (literal " | ")
+     (literal "")))))
+
+
 ]]> <!-- %output-html -->