Blame print/dbsynop.dsl

Packit Service 4c4772
;; $Id: dbsynop.dsl,v 1.3 2003/01/15 08:24:23 adicarlo Exp $
Packit Service 4c4772
;;
Packit Service 4c4772
;; This file is part of the Modular DocBook Stylesheet distribution.
Packit Service 4c4772
;; See ../README or http://docbook.sourceforge.net/projects/dsssl/
Packit Service 4c4772
;;
Packit Service 4c4772
Packit Service 4c4772
;; ========================= SYNTAX DEFINITIONS =========================
Packit Service 4c4772
Packit Service 4c4772
(element synopsis ($verbatim-display$ %indent-synopsis-lines%
Packit Service 4c4772
				      %number-synopsis-lines%))
Packit Service 4c4772
Packit Service 4c4772
(element cmdsynopsis
Packit Service 4c4772
  ;; Can't be an $informal-object$ because it needs the paragraph
Packit Service 4c4772
  ;; wrapper around process-children
Packit Service 4c4772
  (make display-group
Packit Service 4c4772
    start-indent: (+ %block-start-indent% (inherited-start-indent))
Packit Service 4c4772
    space-before: %block-sep%
Packit Service 4c4772
    space-after: %block-sep%
Packit Service 4c4772
    (make paragraph
Packit Service 4c4772
      (process-children))))
Packit Service 4c4772
Packit Service 4c4772
;; Support for ARG provided by James Bostock, augmented by norm
Packit Service 4c4772
;;
Packit Service 4c4772
Packit Service 4c4772
(element (cmdsynopsis command)
Packit Service 4c4772
  (make sequence
Packit Service 4c4772
    (if (first-sibling? (current-node))
Packit Service 4c4772
	(empty-sosofo)
Packit Service 4c4772
	(make paragraph-break))
Packit Service 4c4772
    (next-match)
Packit Service 4c4772
    (literal " ")))
Packit Service 4c4772
Packit Service 4c4772
(element group
Packit Service 4c4772
  (let ((choice  (attribute-string (normalize "choice")))
Packit Service 4c4772
	(rep     (attribute-string (normalize "rep")))
Packit Service 4c4772
	(sepchar (if (inherited-attribute-string (normalize "sepchar"))
Packit Service 4c4772
		     (inherited-attribute-string (normalize "sepchar"))
Packit Service 4c4772
		     " ")))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (if (equal? (absolute-child-number (current-node)) 1)
Packit Service 4c4772
	  (empty-sosofo)
Packit Service 4c4772
	  (literal sepchar))
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? choice (normalize "plain")) (literal %arg-choice-plain-open-str%))
Packit Service 4c4772
       ((equal? choice (normalize "req")) (literal %arg-choice-req-open-str%))
Packit Service 4c4772
       ((equal? choice (normalize "opt")) (literal %arg-choice-opt-open-str%))
Packit Service 4c4772
       (else (literal %arg-choice-def-open-str%)))
Packit Service 4c4772
      (process-children)
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? choice (normalize "plain")) (literal %arg-choice-plain-close-str%))
Packit Service 4c4772
       ((equal? choice (normalize "req")) (literal %arg-choice-req-close-str%))
Packit Service 4c4772
       ((equal? choice (normalize "opt")) (literal %arg-choice-opt-close-str%))
Packit Service 4c4772
       (else (literal %arg-choice-def-close-str%)))
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? rep (normalize "repeat")) (literal %arg-rep-repeat-str%))
Packit Service 4c4772
       ((equal? rep (normalize "norepeat")) (literal %arg-rep-norepeat-str%))
Packit Service 4c4772
       (else (literal %arg-rep-def-str%))))))
Packit Service 4c4772
Packit Service 4c4772
(element arg
Packit Service 4c4772
  (let ((choice  (attribute-string (normalize "choice")))
Packit Service 4c4772
	(rep     (attribute-string (normalize "rep")))
Packit Service 4c4772
	(sepchar (if (inherited-attribute-string (normalize "sepchar"))
Packit Service 4c4772
		     (inherited-attribute-string (normalize "sepchar"))
Packit Service 4c4772
		     " ")))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (if (equal? (absolute-child-number (current-node)) 1)
Packit Service 4c4772
	  (empty-sosofo)
Packit Service 4c4772
	  (literal sepchar))
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? choice (normalize "plain")) (literal %arg-choice-plain-open-str%))
Packit Service 4c4772
       ((equal? choice (normalize "req")) (literal %arg-choice-req-open-str%))
Packit Service 4c4772
       ((equal? choice (normalize "opt")) (literal %arg-choice-opt-open-str%))
Packit Service 4c4772
       (else (literal %arg-choice-def-open-str%)))
Packit Service 4c4772
      (process-children)
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? rep (normalize "repeat")) (literal %arg-rep-repeat-str%))
Packit Service 4c4772
       ((equal? rep (normalize "norepeat")) (literal %arg-rep-norepeat-str%))
Packit Service 4c4772
       (else (literal %arg-rep-def-str%)))
Packit Service 4c4772
      (cond
Packit Service 4c4772
       ((equal? choice (normalize "plain")) (literal %arg-choice-plain-close-str%))
Packit Service 4c4772
       ((equal? choice (normalize "req")) (literal %arg-choice-req-close-str%))
Packit Service 4c4772
       ((equal? choice (normalize "opt")) (literal %arg-choice-opt-close-str%))
Packit Service 4c4772
       (else (literal %arg-choice-def-close-str%))))))
Packit Service 4c4772
Packit Service 4c4772
(element (group arg)
Packit Service 4c4772
  (let ((choice (attribute-string (normalize "choice")))
Packit Service 4c4772
	(rep (attribute-string (normalize "rep"))))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (if (not (first-sibling? (current-node)))
Packit Service 4c4772
	  (literal %arg-or-sep%)
Packit Service 4c4772
	  (empty-sosofo))
Packit Service 4c4772
      (process-children))))
Packit Service 4c4772
Packit Service 4c4772
(element sbr 
Packit Service 4c4772
  (make paragraph-break))
Packit Service 4c4772
Packit Service 4c4772
;; ----------------------------------------------------------------------
Packit Service 4c4772
;; Syntax highlighting...
Packit Service 4c4772
Packit Service 4c4772
(define (funcsynopsis-function #!optional (sosofo (process-children)))
Packit Service 4c4772
  (make sequence
Packit Service 4c4772
    font-weight: 'bold
Packit Service 4c4772
    sosofo))
Packit Service 4c4772
Packit Service 4c4772
(define (paramdef-parameter #!optional (sosofo (process-children)))
Packit Service 4c4772
  (make sequence
Packit Service 4c4772
    font-posture: 'italic
Packit Service 4c4772
    sosofo))
Packit Service 4c4772
Packit Service 4c4772
;; ----------------------------------------------------------------------
Packit Service 4c4772
Packit Service 4c4772
(element synopfragmentref 
Packit Service 4c4772
  (let* ((target (element-with-id (attribute-string (normalize "linkend"))))
Packit Service 4c4772
	 (snum   (child-number target)))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      font-posture: 'italic
Packit Service 4c4772
      (make link 
Packit Service 4c4772
	destination: (node-list-address target)
Packit Service 4c4772
	(make sequence
Packit Service 4c4772
	  font-posture: 'upright
Packit Service 4c4772
	  ($callout-bug$ snum)))
Packit Service 4c4772
      (process-children))))
Packit Service 4c4772
Packit Service 4c4772
(element synopfragment
Packit Service 4c4772
  (let ((snum (child-number (current-node))))
Packit Service 4c4772
    (make paragraph
Packit Service 4c4772
      ($callout-bug$ snum)
Packit Service 4c4772
      (literal " ")
Packit Service 4c4772
      (process-children))))
Packit Service 4c4772
Packit Service 4c4772
(element funcsynopsis 
Packit Service 4c4772
  (let* ((width-in-chars (if (attribute-string "width")
Packit Service 4c4772
			     (string->number (attribute-string "width"))
Packit Service 4c4772
			     %verbatim-default-width%))
Packit Service 4c4772
	 (fsize (lambda () (if (or (attribute-string (normalize "width"))
Packit Service 4c4772
				   (not %verbatim-size-factor%))
Packit Service 4c4772
			       (/ (/ (- %text-width% (inherited-start-indent))
Packit Service 4c4772
				     width-in-chars) 
Packit Service 4c4772
				  0.7)
Packit Service 4c4772
			       (* (inherited-font-size) 
Packit Service 4c4772
				  %verbatim-size-factor%)))))
Packit Service 4c4772
    ;; This used to be a sequence, but that caused the start-indent to be
Packit Service 4c4772
    ;; wrong when it was the first element of a RefSect.  Making it a
Packit Service 4c4772
    ;; paragraph makes the bug go away and doesn't seem to have any ill
Packit Service 4c4772
    ;; effects.  Need to investigate further...
Packit Service 4c4772
    (make paragraph
Packit Service 4c4772
      font-family-name: %mono-font-family%
Packit Service 4c4772
      font-size: (fsize)
Packit Service 4c4772
      font-weight: 'medium
Packit Service 4c4772
      font-posture: 'upright
Packit Service 4c4772
      line-spacing: (* (fsize) %line-spacing-factor%)
Packit Service 4c4772
      ($informal-object$))))
Packit Service 4c4772
Packit Service 4c4772
(element funcsynopsisinfo 
Packit Service 4c4772
  ;; Fake out the font-size so that when verbatim-display calculates the
Packit Service 4c4772
  ;; verbatim-size-factor it doesn't get squared.  This will fail if the
Packit Service 4c4772
  ;; "correct" size isn't bfsize, but what can I do?
Packit Service 4c4772
  (make sequence
Packit Service 4c4772
    font-size: %bf-size%
Packit Service 4c4772
    ($verbatim-display$ %indent-funcsynopsisinfo-lines%
Packit Service 4c4772
			%number-funcsynopsisinfo-lines%)))
Packit Service 4c4772
Packit Service 4c4772
(element funcprototype 
Packit Service 4c4772
  (let ((paramdefs (select-elements (children (current-node))
Packit Service 4c4772
				    (normalize "paramdef"))))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (make paragraph
Packit Service 4c4772
	font-family-name: %mono-font-family%
Packit Service 4c4772
	(process-children))
Packit Service 4c4772
      (if (equal? %funcsynopsis-style% 'kr)
Packit Service 4c4772
	  (with-mode kr-funcsynopsis-mode
Packit Service 4c4772
	    (process-node-list paramdefs))
Packit Service 4c4772
	  (empty-sosofo)))))
Packit Service 4c4772
Packit Service 4c4772
(element funcdef (process-children))
Packit Service 4c4772
(element (funcdef function) 
Packit Service 4c4772
  (if %funcsynopsis-decoration%
Packit Service 4c4772
      (funcsynopsis-function)
Packit Service 4c4772
      (process-children)))
Packit Service 4c4772
Packit Service 4c4772
(element void 
Packit Service 4c4772
  (if (equal? %funcsynopsis-style% 'ansi)
Packit Service 4c4772
      (literal "(void);")
Packit Service 4c4772
      (literal "();")))
Packit Service 4c4772
Packit Service 4c4772
(element varargs (literal "(...);"))
Packit Service 4c4772
Packit Service 4c4772
(element paramdef
Packit Service 4c4772
  (let ((param (select-elements (children (current-node)) (normalize "parameter"))))
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (if (equal? (child-number (current-node)) 1)
Packit Service 4c4772
	  (literal "(")
Packit Service 4c4772
	  (empty-sosofo))
Packit Service 4c4772
      (if (equal? %funcsynopsis-style% 'ansi)
Packit Service 4c4772
	  (process-children)
Packit Service 4c4772
	  (process-node-list param))
Packit Service 4c4772
      (if (equal? (gi (ifollow (current-node))) (normalize "paramdef"))
Packit Service 4c4772
	  (literal ", ")
Packit Service 4c4772
	  (literal ");")))))
Packit Service 4c4772
  
Packit Service 4c4772
(element (paramdef parameter)
Packit Service 4c4772
  (make sequence
Packit Service 4c4772
    (if %funcsynopsis-decoration%
Packit Service 4c4772
      (paramdef-parameter)
Packit Service 4c4772
      (process-children))
Packit Service 4c4772
    (if (equal? (gi (ifollow (current-node))) (normalize "parameter"))
Packit Service 4c4772
	(literal ", ")
Packit Service 4c4772
	(empty-sosofo))))
Packit Service 4c4772
Packit Service 4c4772
(element funcparams 
Packit Service 4c4772
  (make sequence 
Packit Service 4c4772
    (literal "(")
Packit Service 4c4772
    (process-children)
Packit Service 4c4772
    (literal ")")))
Packit Service 4c4772
Packit Service 4c4772
(mode kr-funcsynopsis-mode
Packit Service 4c4772
  (element paramdef
Packit Service 4c4772
    (make sequence
Packit Service 4c4772
      (make paragraph
Packit Service 4c4772
	font-family-name: %mono-font-family%
Packit Service 4c4772
	start-indent: (+ (inherited-start-indent) %kr-funcsynopsis-indent%)
Packit Service 4c4772
	(make sequence
Packit Service 4c4772
	  (process-children) 
Packit Service 4c4772
	  (literal ";"))))))