Blame html/dbinline.dsl

Packit e20b97
;; $Id: dbinline.dsl,v 1.11 2004/09/14 14:47:10 petere78 Exp $
Packit e20b97
;;
Packit e20b97
;; This file is part of the Modular DocBook Stylesheet distribution.
Packit e20b97
;; See ../README or http://docbook.sourceforge.net/projects/dsssl/
Packit e20b97
;;
Packit e20b97
Packit e20b97
;; ============================== INLINES ===============================
Packit e20b97
Packit e20b97
(element abbrev (if %html40%
Packit e20b97
                    ($abbr-seq$)
Packit e20b97
                    ($charseq$)))
Packit e20b97
(element acronym (if %html40%
Packit e20b97
                     ($acronym-seq$)
Packit e20b97
                     ($charseq$)))
Packit e20b97
(element accel ($charseq$))
Packit e20b97
(element action ($charseq$))
Packit e20b97
(element application ($charseq$))
Packit e20b97
(element classname ($code-seq$))
Packit e20b97
(element constant ($code-seq$))
Packit e20b97
(element command ($bold-seq$))
Packit e20b97
(element computeroutput ($samp-seq$))
Packit e20b97
(element database ($charseq$))
Packit e20b97
Packit e20b97
(element email 
Packit e20b97
  ($code-seq$ 
Packit e20b97
   (make sequence 
Packit e20b97
     (literal "<")
Packit e20b97
     (make element gi: "A"
Packit e20b97
	   attributes: (list (list "HREF" 
Packit e20b97
				   (string-append "mailto:" 
Packit e20b97
						  (data (current-node)))))
Packit e20b97
	   (process-children))
Packit e20b97
     (literal ">"))))
Packit e20b97
Packit e20b97
(element errorcode ($charseq$))
Packit e20b97
(element errorname ($charseq$))
Packit e20b97
(element errortype ($charseq$))
Packit e20b97
(element envar ($code-seq$))
Packit e20b97
(element filename ($mono-seq$))         ; unsure
Packit e20b97
(element function ($code-seq$))
Packit e20b97
(element guibutton ($charseq$))
Packit e20b97
(element guiicon ($charseq$))
Packit e20b97
(element guilabel ($charseq$))
Packit e20b97
(element guimenu ($charseq$))
Packit e20b97
(element guimenuitem ($charseq$))
Packit e20b97
(element guisubmenu ($charseq$))
Packit e20b97
(element hardware ($charseq$))
Packit e20b97
(element interface ($charseq$))
Packit e20b97
(element interfacedefinition ($charseq$))
Packit e20b97
(element keycap ($bold-seq$))
Packit e20b97
(element keycode ($charseq$))
Packit e20b97
Packit e20b97
(element keycombo 
Packit e20b97
  (let* ((action (attribute-string (normalize "action")))
Packit e20b97
	 (joinchar 
Packit e20b97
	  (cond
Packit e20b97
	   ((equal? action (normalize "seq")) " ")          ;; space
Packit e20b97
	   ((equal? action (normalize "simul")) "+")        ;; +
Packit e20b97
	   ((equal? action (normalize "press")) "-")        ;; ? I don't know
Packit e20b97
	   ((equal? action (normalize "click")) "-")        ;; ? what to do
Packit e20b97
	   ((equal? action (normalize "double-click")) "-") ;; ? about the rest
Packit e20b97
	   ((equal? action (normalize "other")) "-")        ;; ? of these
Packit e20b97
	   (else "-"))))
Packit e20b97
    (let loop ((nl (children (current-node))) (count 1))
Packit e20b97
      (if (node-list-empty? nl)
Packit e20b97
	  (empty-sosofo)
Packit e20b97
	  (if (equal? count 1)
Packit e20b97
	      (make sequence
Packit e20b97
		(process-node-list (node-list-first nl))
Packit e20b97
		(loop (node-list-rest nl) (+ count 1)))
Packit e20b97
	      (make sequence
Packit e20b97
		(literal joinchar)
Packit e20b97
		(process-node-list (node-list-first nl))
Packit e20b97
		(loop (node-list-rest nl) (+ count 1))))))))
Packit e20b97
Packit e20b97
(element keysym ($charseq$))
Packit e20b97
(element literal ($mono-seq$))
Packit e20b97
(element medialabel ($italic-seq$))
Packit e20b97
Packit e20b97
(element menuchoice
Packit e20b97
  (let* ((shortcut (select-elements (children (current-node)) 
Packit e20b97
				    (normalize "shortcut")))
Packit e20b97
	 (items    (node-list-filter-by-not-gi
Packit e20b97
		    (children (current-node))
Packit e20b97
		    (list (normalize "shortcut")))))
Packit e20b97
    (make sequence
Packit e20b97
      (let loop ((nl items) (first? #t))
Packit e20b97
	(if (node-list-empty? nl)
Packit e20b97
	    (empty-sosofo)
Packit e20b97
	    (make sequence
Packit e20b97
	      (if first?
Packit e20b97
		  (process-node-list (node-list-first nl))
Packit e20b97
		  (make sequence
Packit e20b97
		    (if (or (equal? (gi (node-list-first nl))
Packit e20b97
				    (normalize "guimenuitem"))
Packit e20b97
			    (equal? (gi (node-list-first nl))
Packit e20b97
				    (normalize "guisubmenu")))
Packit e20b97
			(make sequence
Packit e20b97
			  (literal "-")
Packit e20b97
			  (make entity-ref name: "gt"))
Packit e20b97
			(literal "+"))
Packit e20b97
		    (process-node-list (node-list-first nl))))
Packit e20b97
	      (loop (node-list-rest nl) #f))))
Packit e20b97
      (if (node-list-empty? shortcut)
Packit e20b97
	  (empty-sosofo)
Packit e20b97
	  (make sequence
Packit e20b97
	    (literal " (")
Packit e20b97
	    (process-node-list shortcut)
Packit e20b97
	    (literal ")"))))))
Packit e20b97
Packit e20b97
(element methodname ($code-seq$))
Packit e20b97
(element shortcut ($bold-seq$))
Packit e20b97
(element mousebutton ($charseq$))
Packit e20b97
(element option ($code-seq$))
Packit e20b97
Packit e20b97
(element optional 
Packit e20b97
  (make sequence 
Packit e20b97
    (literal %arg-choice-opt-open-str%)
Packit e20b97
    ($charseq$)
Packit e20b97
    (literal %arg-choice-opt-close-str%)))
Packit e20b97
Packit e20b97
(element parameter ($code-seq$))
Packit e20b97
(element property ($charseq$))
Packit e20b97
(element prompt ($samp-seq$))
Packit e20b97
(element replaceable ($italic-mono-seq$))
Packit e20b97
(element returnvalue ($charseq$))
Packit e20b97
(element structfield ($code-seq$))
Packit e20b97
(element structname ($code-seq$))
Packit e20b97
(element symbol ($code-seq$))
Packit e20b97
(element systemitem ($charseq$))        ; ambiguous, should look at class
Packit e20b97
(element token ($charseq$))
Packit e20b97
(element type ($charseq$))              ; ambiguous
Packit e20b97
(element userinput ($kbd-seq$))
Packit e20b97
(element varname ($code-seq$))
Packit e20b97
Packit e20b97
(element citation 
Packit e20b97
  (if biblio-citation-check
Packit e20b97
      (let* ((bgraphies (select-elements (descendants (sgml-root-element))
Packit e20b97
					 (normalize "bibliography")))
Packit e20b97
	     (bchildren1 (expand-children bgraphies
Packit e20b97
					  (list (normalize "bibliography"))))
Packit e20b97
	     (bchildren2 (expand-children bchildren1
Packit e20b97
					  (list (normalize "bibliodiv"))))
Packit e20b97
	     (bibentries (node-list-filter-by-gi 
Packit e20b97
			  bchildren2
Packit e20b97
			  (list (normalize "biblioentry")
Packit e20b97
				(normalize "bibliomixed")))))
Packit e20b97
	(let loop ((bibs bibentries))
Packit e20b97
	  (if (node-list-empty? bibs)
Packit e20b97
	      (make sequence
Packit e20b97
		(error (string-append "Cannot find citation: " 
Packit e20b97
				      (data (current-node))))
Packit e20b97
		(literal "[") ($charseq$) (literal "]"))
Packit e20b97
	      (if (citation-matches-target? (current-node) 
Packit e20b97
					    (node-list-first bibs))
Packit e20b97
		  (make element gi: "A"
Packit e20b97
			attributes: (list 
Packit e20b97
				     (list "HREF" (href-to 
Packit e20b97
						   (node-list-first bibs))))
Packit e20b97
			(literal "[") ($charseq$) (literal "]"))
Packit e20b97
		  (loop (node-list-rest bibs))))))
Packit e20b97
      (make sequence 
Packit e20b97
	(literal "[") ($charseq$) (literal "]"))))
Packit e20b97
Packit e20b97
(element citerefentry
Packit e20b97
  (if %citerefentry-link%
Packit e20b97
      (make element gi: "A"
Packit e20b97
	    attributes: (list (list "HREF" ($generate-citerefentry-link$)))
Packit e20b97
	    (if %refentry-xref-italic%
Packit e20b97
		($italic-seq$)
Packit e20b97
		($charseq$)))
Packit e20b97
      (if %refentry-xref-italic%
Packit e20b97
	  ($italic-seq$)
Packit e20b97
	  ($charseq$))))
Packit e20b97
Packit e20b97
(define ($generate-citerefentry-link$)
Packit e20b97
  (empty-sosofo))
Packit e20b97
Packit e20b97
(define ($x-generate-citerefentry-link$)
Packit e20b97
  (let* ((refentrytitle (select-elements (children (current-node))
Packit e20b97
					 (normalize "refentrytitle")))
Packit e20b97
	 (manvolnum (select-elements (children (current-node))
Packit e20b97
				     (normalize "manvolnum"))))
Packit e20b97
    (string-append "http://example.com/cgi-bin/man.cgi?"
Packit e20b97
		   (data refentrytitle)
Packit e20b97
		   "("
Packit e20b97
		   (data manvolnum)
Packit e20b97
		   ")")))
Packit e20b97
Packit e20b97
(element citetitle
Packit e20b97
  (if (equal? (attribute-string (normalize "pubwork")) "article")
Packit e20b97
      (make sequence
Packit e20b97
	(literal (gentext-start-quote))
Packit e20b97
	(process-children)
Packit e20b97
	(literal (gentext-end-quote)))
Packit e20b97
      ($italic-seq$)))
Packit e20b97
Packit e20b97
(element emphasis
Packit e20b97
  (let* ((class (if (and (attribute-string (normalize "role"))
Packit e20b97
			 %emphasis-propagates-style%)
Packit e20b97
		    (attribute-string (normalize "role"))
Packit e20b97
		    "emphasis")))
Packit e20b97
    (make element gi: "SPAN"
Packit e20b97
	  attributes: (list (list "CLASS" class))
Packit e20b97
	  (if (and (attribute-string (normalize "role"))
Packit e20b97
		   (or (equal? (attribute-string (normalize "role")) "strong")
Packit e20b97
		       (equal? (attribute-string (normalize "role")) "bold")))
Packit e20b97
	      ($bold-seq$)
Packit e20b97
	      ($italic-seq$)))))
Packit e20b97
Packit e20b97
(element foreignphrase ($italic-seq$))
Packit e20b97
(element markup ($charseq$))
Packit e20b97
Packit e20b97
(element phrase
Packit e20b97
  (let* ((class (if (and (attribute-string (normalize "role"))
Packit e20b97
			 %phrase-propagates-style%)
Packit e20b97
		    (attribute-string (normalize "role"))
Packit e20b97
		    "phrase")))
Packit e20b97
    (make element gi: "SPAN"
Packit e20b97
	  attributes: (list (list "CLASS" class))
Packit e20b97
	  ($charseq$))))
Packit e20b97
Packit e20b97
(element quote
Packit e20b97
  (let* ((hnr   (hierarchical-number-recursive (normalize "quote") 
Packit e20b97
					       (current-node)))
Packit e20b97
	 (depth (length hnr)))
Packit e20b97
    (make element gi: "SPAN"
Packit e20b97
	  attributes: '(("CLASS" "QUOTE"))
Packit e20b97
	  (if (equal? (modulo depth 2) 1)
Packit e20b97
	      (make sequence
Packit e20b97
		(literal (gentext-start-nested-quote))
Packit e20b97
		(process-children)
Packit e20b97
		(literal (gentext-end-nested-quote)))
Packit e20b97
	      (make sequence
Packit e20b97
		(literal (gentext-start-quote))
Packit e20b97
		(process-children)
Packit e20b97
		(literal (gentext-end-quote)))))))
Packit e20b97
Packit e20b97
(element sgmltag
Packit e20b97
  (let ((class (if (attribute-string (normalize "class"))
Packit e20b97
		   (attribute-string (normalize "class"))
Packit e20b97
		   (normalize "element"))))
Packit e20b97
Packit e20b97
  (cond
Packit e20b97
   ((or (equal? class (normalize "attribute"))
Packit e20b97
        (equal? class (normalize "attvalue"))
Packit e20b97
        (equal? class (normalize "element"))) ($code-seq$))
Packit e20b97
   ((equal? class (normalize "endtag")) ($code-seq$ (make sequence 
Packit e20b97
						      (literal "</") 
Packit e20b97
						      (process-children)
Packit e20b97
						      (literal ">"))))
Packit e20b97
   ((equal? class (normalize "genentity")) ($code-seq$ (make sequence
Packit e20b97
							 (literal "&")
Packit e20b97
							 (process-children)
Packit e20b97
							 (literal ";"))))
Packit e20b97
   ((equal? class (normalize "numcharref")) ($code-seq$ (make sequence
Packit e20b97
							  (literal "&#")
Packit e20b97
							  (process-children)
Packit e20b97
							  (literal ";"))))
Packit e20b97
   ((equal? class (normalize "paramentity")) ($code-seq$ (make sequence
Packit e20b97
							   (literal "%")
Packit e20b97
							   (process-children)
Packit e20b97
							   (literal ";"))))
Packit e20b97
   ((equal? class (normalize "pi")) ($code-seq$ (make sequence 
Packit e20b97
						  (literal "
Packit e20b97
						  (process-children)
Packit e20b97
						  (literal ">"))))
Packit e20b97
   ((equal? class (normalize "xmlpi")) ($code-seq$ (make sequence 
Packit e20b97
						  (literal "
Packit e20b97
						  (process-children)
Packit e20b97
						  (literal "?>"))))
Packit e20b97
   ((equal? class (normalize "starttag")) ($code-seq$ (make sequence 
Packit e20b97
							(literal "<") 
Packit e20b97
							(process-children)
Packit e20b97
							(literal ">"))))
Packit e20b97
   ((equal? class (normalize "emptytag")) ($code-seq$ (make sequence 
Packit e20b97
							(literal "<") 
Packit e20b97
							(process-children)
Packit e20b97
							(literal "/>"))))
Packit e20b97
   ((equal? class (normalize "sgmlcomment")) ($code-seq$ (make sequence 
Packit e20b97
							   (literal "
Packit e20b97
							   (process-children)
Packit e20b97
							   (literal "-->"))))
Packit e20b97
]]>
Packit e20b97
  (else ($charseq$)))))
Packit e20b97
Packit e20b97
(element trademark
Packit e20b97
  (make sequence
Packit e20b97
    ($charseq$)
Packit e20b97
    (cond
Packit e20b97
     ((equal? (attribute-string "class") (normalize "copyright"))
Packit e20b97
      (make entity-ref name: "copy"))
Packit e20b97
     ((equal? (attribute-string "class") (normalize "registered"))
Packit e20b97
      (make entity-ref name: "reg"))
Packit e20b97
     ((equal? (attribute-string "class") (normalize "service"))
Packit e20b97
      (make element gi: "SUP"
Packit e20b97
	    (literal "SM")))
Packit e20b97
     (else
Packit e20b97
      (make entity-ref name: "#8482")))))
Packit e20b97
Packit e20b97
(element wordasword ($italic-seq$))
Packit e20b97
Packit e20b97
(element lineannotation
Packit e20b97
  (process-children))
Packit e20b97
Packit e20b97
(element superscript 
Packit e20b97
  (make element gi: "SUP"
Packit e20b97
	(process-children)))
Packit e20b97
Packit e20b97
(element subscript
Packit e20b97
  (make element gi: "SUB"
Packit e20b97
	(process-children)))