;; $Id: dbefsyn.dsl,v 1.4 2003/01/15 08:24:23 adicarlo Exp $ ;; ;; This file is part of the Modular DocBook Stylesheet distribution. ;; See ../README or http://docbook.sourceforge.net/projects/dsssl/ ;; ;; ============================ CLASS SYNOPSIS ============================= (define %indent-classsynopsisinfo-lines% #f) (define %number-classsynopsisinfo-lines% #f) (define %default-classsynopsis-language% "java") (element classsynopsis (let ((language (if (attribute-string (normalize "language")) (attribute-string (normalize "language")) %default-classsynopsis-language%))) (case language (("java") (with-mode cs-java-mode (process-node-list (current-node)))) (("perl") (with-mode cs-perl-mode (process-node-list (current-node)))) (("idl") (with-mode cs-idl-mode (process-node-list (current-node)))) (("python") (with-mode cs-python-mode (process-node-list (current-node)))) (else (with-mode cs-java-mode (process-node-list (current-node))))))) (element methodsynopsis (let ((language (if (attribute-string (normalize "language")) (attribute-string (normalize "language")) %default-classsynopsis-language%))) (case language (("java") (with-mode cs-java-mode (process-node-list (current-node)))) (("perl") (with-mode cs-perl-mode (process-node-list (current-node)))) (("idl") (with-mode cs-idl-mode (process-node-list (current-node)))) (("python") (with-mode cs-python-mode (process-node-list (current-node)))) (else (with-mode cs-java-mode (process-node-list (current-node))))))) (element fieldsynopsis (let ((language (if (attribute-string (normalize "language")) (attribute-string (normalize "language")) %default-classsynopsis-language%))) (case language (("java") (with-mode cs-java-mode (process-node-list (current-node)))) (("perl") (with-mode cs-perl-mode (process-node-list (current-node)))) (("idl") (with-mode cs-idl-mode (process-node-list (current-node)))) (("python") (with-mode cs-python-mode (process-node-list (current-node)))) (else (with-mode cs-java-mode (process-node-list (current-node))))))) (element constructorynopsis (let ((language (if (attribute-string (normalize "language")) (attribute-string (normalize "language")) %default-classsynopsis-language%))) (case language (("java") (with-mode cs-java-mode (process-node-list (current-node)))) (("perl") (with-mode cs-perl-mode (process-node-list (current-node)))) (("idl") (with-mode cs-idl-mode (process-node-list (current-node)))) (("python") (with-mode cs-python-mode (process-node-list (current-node)))) (else (with-mode cs-java-mode (process-node-list (current-node))))))) (element destructorsynopsis (let ((language (if (attribute-string (normalize "language")) (attribute-string (normalize "language")) %default-classsynopsis-language%))) (case language (("java") (with-mode cs-java-mode (process-node-list (current-node)))) (("perl") (with-mode cs-perl-mode (process-node-list (current-node)))) (("idl") (with-mode cs-idl-mode (process-node-list (current-node)))) (("python") (with-mode cs-python-mode (process-node-list (current-node)))) (else (with-mode cs-java-mode (process-node-list (current-node))))))) ;; ===== Java ======================================================== (mode cs-java-mode (element classsynopsis (let* ((classes (select-elements (children (current-node)) (normalize "ooclass"))) (classname (node-list-first classes)) (superclasses (node-list-rest classes))) (make display-group use: verbatim-style (make paragraph (process-node-list classname) (process-node-list superclasses) (literal "{")) (process-node-list (node-list-filter-by-gi (children (current-node)) (list (normalize "constructorsynopsis") (normalize "destructorsynopsis") (normalize "fieldsynopsis") (normalize "methodsynopsis") (normalize "classsynopsisinfo")))) (make paragraph (literal "}"))))) (element classsynopsisinfo ($verbatim-display$ %indent-classsynopsisinfo-lines% %number-classsynopsisinfo-lines%)) (element ooclass (make sequence (if (first-sibling?) (literal " ") (literal ", ")) (process-children))) (element oointerface (make sequence (if (first-sibling?) (literal " ") (literal ", ")) (process-children))) (element ooexception (make sequence (if (first-sibling?) (literal " ") (literal ", ")) (process-children))) (element modifier (make sequence (process-children) (literal " "))) (element classname (if (first-sibling?) (make sequence (literal "class ") (process-children) (literal " ") (if (last-sibling?) (empty-sosofo) (literal "extends "))) (make sequence (process-children) (if (last-sibling?) (literal " ") (literal ", "))))) (element fieldsynopsis (make paragraph use: inline-verbatim-style (literal " ") (process-children) (literal ";"))) (element type (make sequence (process-children) (literal " "))) (element varname (make sequence (process-children))) (element initializer (make sequence (literal " = ") (process-children))) (element constructorsynopsis (java-method-synopsis)) (element destructorsynopsis (java-method-synopsis)) (element methodsynopsis (java-method-synopsis)) (element void (literal "void ")) (element methodname (process-children)) (element methodparam (make sequence (if (first-sibling?) (empty-sosofo) (literal ", ")) (process-children))) (element parameter (process-children)) (element exceptionname (make sequence (if (first-sibling?) (literal " throws ") (literal ", ")) (process-children))) ) (define (java-method-synopsis #!optional (nd (current-node))) (let* ((modifiers (select-elements (children nd) (normalize "modifier"))) (notmod (node-list-filter-by-not-gi (children nd) (list (normalize "modifier")))) (type (if (equal? (gi (node-list-first notmod)) (normalize "methodname")) (empty-node-list) (node-list-first notmod))) (methodname (select-elements (children nd) (normalize "methodname"))) (param (node-list-filter-by-gi (node-list-rest notmod) (list (normalize "methodparam")))) (excep (select-elements (children nd) (normalize "exceptionname")))) (make paragraph use: inline-verbatim-style (literal " ") (process-node-list modifiers) (process-node-list type) (process-node-list methodname) (literal "(") (process-node-list param) (literal ")") (process-node-list excep) (literal ";")))) ;; ===== Perl ======================================================== (mode cs-perl-mode (element classsynopsis (let* ((modifiers (select-elements (children (current-node)) (normalize "modifier"))) (classes (select-elements (children (current-node)) (normalize "classname"))) (classname (node-list-first classes)) (superclasses (node-list-rest classes))) (make display-group use: verbatim-style; (make paragraph (literal "package ") (process-node-list classname) (literal ";")) (if (node-list-empty? superclasses) (empty-sosofo) (make sequence (literal "@ISA = ("); (process-node-list superclasses) (literal ";"))) (process-node-list (node-list-filter-by-gi (children (current-node)) (list (normalize "constructorsynopsis") (normalize "destructorsynopsis") (normalize "fieldsynopsis") (normalize "methodsynopsis") (normalize "classsynopsisinfo"))))))) (element classsynopsisinfo ($verbatim-display$ %indent-classsynopsisinfo-lines% %number-classsynopsisinfo-lines%)) (element modifier (literal "Perl ClassSynopses don't use Modifiers")) (element classname (if (first-sibling?) (process-children) (make sequence (process-children) (if (last-sibling?) (empty-sosofo) (literal ", "))))) (element fieldsynopsis (make paragraph use: inline-verbatim-style (literal " "); (process-children) (literal ";"))) (element type (make sequence (process-children) (literal " "))) (element varname (make sequence (process-children))) (element initializer (make sequence (literal " = ") (process-children))) (element constructorsynopsis (perl-method-synopsis)) (element destructorsynopsis (perl-method-synopsis)) (element methodsynopsis (perl-method-synopsis)) (element void (empty-sosofo)) (element methodname (process-children)) (element methodparam (make sequence (if (first-sibling?) (empty-sosofo) (literal ", ")) (process-children))) (element parameter (process-children)) (element exceptionname (literal "Perl ClassSynopses don't use Exceptions")) ) (define (perl-method-synopsis #!optional (nd (current-node))) (let* ((modifiers (select-elements (children nd) (normalize "modifier"))) (notmod (node-list-filter-by-not-gi (children nd) (list (normalize "modifier")))) (type (if (equal? (gi (node-list-first notmod)) (normalize "methodname")) (empty-node-list) (node-list-first notmod))) (methodname (select-elements (children nd) (normalize "methodname"))) (param (node-list-filter-by-gi (node-list-rest notmod) (list (normalize "type") (normalize "void")))) (excep (select-elements (children nd) (normalize "exceptionname")))) (make paragraph use: inline-verbatim-style (literal "sub ") (process-node-list modifiers) (process-node-list type) (process-node-list methodname) (literal " { ... }")))) ;; ===== IDL ========================================================= (mode cs-idl-mode (element classsynopsis (let* ((modifiers (select-elements (children (current-node)) (normalize "modifier"))) (classes (select-elements (children (current-node)) (normalize "classname"))) (classname (node-list-first classes)) (superclasses (node-list-rest classes))) (make display-group use: verbatim-style; (make paragraph (literal "interface ") (process-node-list modifiers) (process-node-list classname) (if (node-list-empty? superclasses) (literal " ") (make sequence (literal " : ") (process-node-list superclasses))) (literal "{")) (process-node-list (node-list-filter-by-gi (children (current-node)) (list (normalize "constructorsynopsis") (normalize "destructorsynopsis") (normalize "fieldsynopsis") (normalize "methodsynopsis") (normalize "classsynopsisinfo")))) (make paragraph (literal "}"))))) (element classsynopsisinfo ($verbatim-display$ %indent-classsynopsisinfo-lines% %number-classsynopsisinfo-lines%)) (element modifier (make sequence (process-children) (literal " "))) (element classname (if (first-sibling?) (process-children) (make sequence (process-children) (if (last-sibling?) (empty-sosofo) (literal ", "))))) (element fieldsynopsis (make paragraph use: inline-verbatim-style (literal " "); (process-children) (literal ";"))) (element type (make sequence (process-children) (literal " "))) (element varname (make sequence (process-children))) (element initializer (make sequence (literal " = ") (process-children))) (element constructorsynopsis (idl-method-synopsis)) (element destructorsynopsis (idl-method-synopsis)) (element methodsynopsis (idl-method-synopsis)) (element void (literal "void ")) (element methodname (process-children)) (element methodparam (make sequence (if (first-sibling?) (empty-sosofo) (literal ", ")) (process-children))) (element parameter (process-children)) (element exceptionname (make sequence (if (first-sibling?) (literal " raises(") (literal ", ")) (process-children) (if (last-sibling?) (literal ")") (empty-sosofo)))) ) (define (idl-method-synopsis #!optional (nd (current-node))) (let* ((modifiers (select-elements (children nd) (normalize "modifier"))) (notmod (node-list-filter-by-not-gi (children nd) (list (normalize "modifier")))) (type (if (equal? (gi (node-list-first notmod)) (normalize "methodname")) (empty-node-list) (node-list-first notmod))) (methodname (select-elements (children nd) (normalize "methodname"))) (param (node-list-filter-by-gi (node-list-rest notmod) (list (normalize "methodparam")))) (excep (select-elements (children nd) (normalize "exceptionname")))) (make paragraph use: inline-verbatim-style (process-node-list modifiers) (process-node-list type) (process-node-list methodname) (literal "(") (process-node-list param) (literal ")") (process-node-list excep) (literal ";")))) ;; ===== Python ====================================================== ;; Contributed by Lane Stevens, lane@cycletime.com (mode cs-python-mode (element classsynopsis (let* ((classes (select-elements (children (current-node)) (normalize "ooclass"))) (classname (node-list-first classes)) (superclasses (node-list-rest classes))) (make display-group use: verbatim-style (make paragraph (literal "class ") (process-node-list classname) (literal "(") (process-node-list superclasses) (literal ") :")) (process-node-list (node-list-filter-by-gi (children (current-node)) (list (normalize "constructorsynopsis") (normalize "destructorsynopsis") (normalize "fieldsynopsis") (normalize "methodsynopsis") (normalize "classsynopsisinfo")))) ) ) ) (element ooclass (make sequence (process-children) (cond ((first-sibling?) (literal " ")) ((last-sibling?) (empty-sosofo)) (#t (literal ", ")) ) ) ) (element methodsynopsis (python-method-synopsis)) (element classname (process-children)) (element initializer (make sequence (literal " = ") (process-children))) (element methodname (process-children)) (element methodparam (make sequence (process-children) (if (last-sibling?) (empty-sosofo) (literal ", ")) ) ) (element parameter (process-children)) ) (define (python-method-synopsis #!optional (nd (current-node))) (let* ((the-method-name (select-elements (children nd) (normalize "methodname"))) (the-method-params (select-elements (children nd) (normalize "methodparam"))) ) (make paragraph use: inline-verbatim-style (literal " def ") (process-node-list the-method-name) (literal "(") (process-node-list the-method-params) (literal ") :")) ) ) ;; EOF