summaryrefslogtreecommitdiff
path: root/html/dbqanda.dsl
diff options
context:
space:
mode:
authorGraydon, Tracy <tracy.graydon@intel.com>2012-08-31 11:34:41 -0700
committerGraydon, Tracy <tracy.graydon@intel.com>2012-08-31 11:34:41 -0700
commitd31c43e62fd5483de3604ef825522501eece7feb (patch)
tree176c351869a67eaf8347faba2e1f3a60fa9caeaf /html/dbqanda.dsl
downloaddocbook-style-dsssl-d31c43e62fd5483de3604ef825522501eece7feb.tar.gz
docbook-style-dsssl-d31c43e62fd5483de3604ef825522501eece7feb.tar.bz2
docbook-style-dsssl-d31c43e62fd5483de3604ef825522501eece7feb.zip
Diffstat (limited to 'html/dbqanda.dsl')
-rw-r--r--html/dbqanda.dsl172
1 files changed, 172 insertions, 0 deletions
diff --git a/html/dbqanda.dsl b/html/dbqanda.dsl
new file mode 100644
index 0000000..633b26e
--- /dev/null
+++ b/html/dbqanda.dsl
@@ -0,0 +1,172 @@
+;; $Id: dbqanda.dsl,v 1.1 2003/03/25 19:53:41 adicarlo Exp $
+;;
+;; This file is part of the Modular DocBook Stylesheet distribution.
+;; See ../README or http://docbook.sourceforge.net/projects/dsssl/
+;;
+
+;; ============================== QANDASET ==============================
+
+(define (qanda-defaultlabel)
+ (normalize "number"))
+
+(define (qanda-section-level)
+ ;; FIXME: what if they nest inside each other?
+ (let* ((enclsect (ancestor-member (current-node)
+ (list (normalize "section")
+ (normalize "simplesect")
+ (normalize "sect5")
+ (normalize "sect4")
+ (normalize "sect3")
+ (normalize "sect2")
+ (normalize "sect1")
+ (normalize "refsect3")
+ (normalize "refsect2")
+ (normalize "refsect1")))))
+ (SECTLEVEL enclsect)))
+
+(define (qandadiv-section-level)
+ (let ((depth (length (hierarchical-number-recursive
+ (normalize "qandadiv")))))
+ (+ (qanda-section-level) depth)))
+
+(element qandaset
+ (let ((title (select-elements (children (current-node))
+ (normalize "title")))
+ ;; process title and rest separately so that we can put the TOC
+ ;; in the rigth place...
+ (rest (node-list-filter-by-not-gi (children (current-node))
+ (list (normalize "title")))))
+ (make element gi: "DIV"
+ attributes: (list (list "CLASS" (gi)))
+ (process-node-list title)
+ (if ($generate-qandaset-toc$)
+ (process-qanda-toc)
+ (empty-sosofo))
+ (process-node-list rest))))
+
+(element (qandaset title)
+ (let* ((htmlgi (string-append "H" (number->string
+ (+ (qanda-section-level) 1)))))
+ (make element gi: htmlgi
+ attributes: (list (list "CLASS" (gi (current-node))))
+ (process-children))))
+
+(element qandadiv
+ (make element gi: "DIV"
+ attributes: (list (list "CLASS" (gi)))
+ (process-children)))
+
+(element (qandadiv title)
+ (let* ((hnr (hierarchical-number-recursive (normalize "qandadiv")
+ (current-node)))
+ (number (let loop ((numlist hnr) (number "") (sep ""))
+ (if (null? numlist)
+ number
+ (loop (cdr numlist)
+ (string-append number
+ sep
+ (number->string (car numlist)))
+ "."))))
+ (htmlgi (string-append "H" (number->string
+ (+ (qandadiv-section-level) 1)))))
+ (make element gi: htmlgi
+ (make element gi: "A"
+ attributes: (list (list "NAME" (element-id
+ (parent (current-node)))))
+ (empty-sosofo))
+ (literal number ". ")
+ (process-children))))
+
+(element qandaentry
+ (make element gi: "DIV"
+ attributes: (list (list "CLASS" (gi)))
+ (process-children)))
+
+(element question
+ (let* ((chlist (children (current-node)))
+ (firstch (node-list-first chlist))
+ (restch (node-list-rest chlist)))
+ (make element gi: "DIV"
+ attributes: (list (list "CLASS" (gi)))
+ (make element gi: "P"
+ (make element gi: "A"
+ attributes: (list (list "NAME" (element-id)))
+ (empty-sosofo))
+ (make element gi: "B"
+ (literal (question-answer-label (current-node)) " "))
+ (process-node-list (children firstch)))
+ (process-node-list restch))))
+
+(element answer
+ (let* ((inhlabel (inherited-attribute-string (normalize "defaultlabel")))
+ (deflabel (if inhlabel inhlabel (qanda-defaultlabel)))
+ (label (attribute-string (normalize "label")))
+ (chlist (children (current-node)))
+ (firstch (node-list-first chlist))
+ (restch (node-list-rest chlist)))
+ (make element gi: "DIV"
+ attributes: (list (list "CLASS" (gi)))
+ (make element gi: "P"
+ (make element gi: "B"
+ (literal (question-answer-label (current-node)) " "))
+ (process-node-list (children firstch)))
+ (process-node-list restch))))
+
+;; = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+
+(define (process-qanda-toc #!optional (node (current-node)))
+ (let* ((divs (node-list-filter-by-gi (children node)
+ (list (normalize "qandadiv"))))
+ (entries (node-list-filter-by-gi (children node)
+ (list (normalize "qandaentry"))))
+ (inhlabel (inherited-attribute-string (normalize "defaultlabel")))
+ (deflabel (if inhlabel inhlabel (qanda-defaultlabel))))
+ (make element gi: "DL"
+ (with-mode qandatoc
+ (process-node-list divs))
+ (with-mode qandatoc
+ (process-node-list entries)))))
+
+(mode qandatoc
+ (element qandadiv
+ (let ((title (select-elements (children (current-node))
+ (normalize "title"))))
+ (make sequence
+ (make element gi: "DT"
+ (process-node-list title))
+ (make element gi: "DD"
+ (process-qanda-toc)))))
+
+ (element (qandadiv title)
+ (let* ((hnr (hierarchical-number-recursive (normalize "qandadiv")
+ (current-node)))
+ (number (let loop ((numlist hnr) (number "") (sep ""))
+ (if (null? numlist)
+ number
+ (loop (cdr numlist)
+ (string-append number
+ sep
+ (number->string (car numlist)))
+ ".")))))
+ (make sequence
+ (literal number ". ")
+ (make element gi: "A"
+ attributes: (list (list "HREF"
+ (href-to (parent (current-node)))))
+ (process-children)))))
+
+ (element qandaentry
+ (process-children))
+
+ (element question
+ (let* ((chlist (children (current-node)))
+ (firstch (node-list-first chlist)))
+ (make element gi: "DT"
+ (literal (question-answer-label (current-node)) " ")
+ (make element gi: "A"
+ attributes: (list (list "HREF" (href-to (current-node))))
+ (process-node-list (children firstch))))))
+
+ (element answer
+ (empty-sosofo))
+)