mirror of
https://github.com/smarty-php/smarty.git
synced 2025-08-05 02:44:27 +02:00
dsl files
This commit is contained in:
46
docs/dsssl/common.dsl
Normal file
46
docs/dsssl/common.dsl
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
;; -*- Scheme -*-
|
||||||
|
;;
|
||||||
|
;; $Id$
|
||||||
|
;;
|
||||||
|
;; This file contains stylesheet customization common to the HTML
|
||||||
|
;; and print versions.
|
||||||
|
;;
|
||||||
|
|
||||||
|
;; Stylesheets Localization
|
||||||
|
(define %default-language% "en")
|
||||||
|
|
||||||
|
(define %use-id-as-filename% #t)
|
||||||
|
(define %gentext-nav-tblwidth% "100%")
|
||||||
|
(define %refentry-function% #t)
|
||||||
|
(define %refentry-generate-name% #f)
|
||||||
|
(define %funcsynopsis-style% 'ansi)
|
||||||
|
(define ($legalnotice-link-file$ legalnotice)
|
||||||
|
(string-append "copyright" %html-ext%))
|
||||||
|
(define %generate-legalnotice-link% #t)
|
||||||
|
(define %footnotes-at-end% #t)
|
||||||
|
(define %force-chapter-toc% #t)
|
||||||
|
(define newline "\U-000D")
|
||||||
|
(define %number-programlisting-lines% #f)
|
||||||
|
(define %linenumber-mod% 1)
|
||||||
|
(define %shade-verbatim% #t)
|
||||||
|
|
||||||
|
(define ($generate-book-lot-list$)
|
||||||
|
;; REFENTRY generate-book-lot-list
|
||||||
|
;; PURP Which Lists of Titles should be produced for Books?
|
||||||
|
;; DESC
|
||||||
|
;; This parameter should be a list (possibly empty) of the elements
|
||||||
|
;; for which Lists of Titles should be produced for each 'Book'.
|
||||||
|
;;
|
||||||
|
;; It is meaningless to put elements that do not have titles in this
|
||||||
|
;; list. If elements with optional titles are placed in this list, only
|
||||||
|
;; the instances of those elements that do have titles will appear in
|
||||||
|
;; the LOT.
|
||||||
|
;;
|
||||||
|
;; /DESC
|
||||||
|
;; AUTHOR N/A
|
||||||
|
;; /REFENTRY
|
||||||
|
(list (normalize "table")))
|
||||||
|
|
||||||
|
(define (php-code code)
|
||||||
|
(make processing-instruction
|
||||||
|
data: (string-append "php " code "?")))
|
382
docs/dsssl/html-common.dsl
Normal file
382
docs/dsssl/html-common.dsl
Normal file
@@ -0,0 +1,382 @@
|
|||||||
|
;; -*- Scheme -*-
|
||||||
|
;;
|
||||||
|
;; $Id$
|
||||||
|
;;
|
||||||
|
|
||||||
|
;; Returns the depth of the auto-generated TOC (table of contents) that
|
||||||
|
;; should be made at the nd-level
|
||||||
|
(define (toc-depth nd)
|
||||||
|
(if (string=? (gi nd) (normalize "book"))
|
||||||
|
3 ; the depth of the top-level TOC
|
||||||
|
1 ; the depth of all other TOCs
|
||||||
|
))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
(element (funcdef function)
|
||||||
|
($bold-seq$
|
||||||
|
(make sequence
|
||||||
|
(process-children)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(define (is-true-optional nl)
|
||||||
|
(and (equal? (gi (parent nl)) (normalize "parameter"))
|
||||||
|
(equal? 0 (string-length (strip (data (preced nl)))))
|
||||||
|
(equal? 0 (string-length (strip (data (follow nl)))))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(define (has-true-optional nl)
|
||||||
|
(is-true-optional
|
||||||
|
(node-list-first-element
|
||||||
|
(select-elements
|
||||||
|
(descendants nl)
|
||||||
|
(normalize "optional"))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(define (count-true-optionals nl)
|
||||||
|
(let loop
|
||||||
|
((result 0)
|
||||||
|
(nl (select-elements (descendants nl) (normalize "optional")))
|
||||||
|
)
|
||||||
|
(if(node-list-empty? nl)
|
||||||
|
result
|
||||||
|
(if(is-true-optional(node-list-first nl))
|
||||||
|
(loop (+ result 1) (node-list-rest nl))
|
||||||
|
(loop result (node-list-rest nl))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
;; there are two different kinds of optionals
|
||||||
|
;; optional parameters and optional parameter parts
|
||||||
|
;; an optional parameter is identified by an optional tag
|
||||||
|
;; with a parameter tag as its parent
|
||||||
|
;; and only whitespace between them
|
||||||
|
(element optional
|
||||||
|
;;check for true optional parameter
|
||||||
|
(if (is-true-optional (current-node))
|
||||||
|
;; yes - handle '[...]' in paramdef
|
||||||
|
(process-children-trim)
|
||||||
|
;; no - do '[...]' output
|
||||||
|
(make sequence
|
||||||
|
(literal %arg-choice-opt-open-str%)
|
||||||
|
(process-children-trim)
|
||||||
|
(literal %arg-choice-opt-close-str%)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
;; now this is going to be tricky
|
||||||
|
(element paramdef
|
||||||
|
(make sequence
|
||||||
|
;; special treatment for first parameter in funcsynopsis
|
||||||
|
(if (equal? (child-number (current-node)) 1)
|
||||||
|
;; is first ?
|
||||||
|
(make sequence
|
||||||
|
;; start parameter list
|
||||||
|
(literal "(")
|
||||||
|
;; is optional ?
|
||||||
|
( if (has-true-optional (current-node))
|
||||||
|
(literal %arg-choice-opt-open-str%)
|
||||||
|
(empty-sosofo)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
;; not first
|
||||||
|
(empty-sosofo)
|
||||||
|
)
|
||||||
|
|
||||||
|
;;
|
||||||
|
(process-children-trim)
|
||||||
|
|
||||||
|
;; special treatment for last parameter
|
||||||
|
(if (equal? (gi (ifollow (current-node))) (normalize "paramdef"))
|
||||||
|
;; more parameters will follow
|
||||||
|
(make sequence
|
||||||
|
;; next is optional ?
|
||||||
|
( if (has-true-optional (ifollow (current-node)))
|
||||||
|
;; optional
|
||||||
|
(make sequence
|
||||||
|
(literal " ")
|
||||||
|
(literal %arg-choice-opt-open-str%)
|
||||||
|
)
|
||||||
|
;; not optional
|
||||||
|
(empty-sosofo)
|
||||||
|
)
|
||||||
|
(literal ", " )
|
||||||
|
)
|
||||||
|
;; last parameter
|
||||||
|
(make sequence
|
||||||
|
(literal
|
||||||
|
(let loop ((result "")(count (count-true-optionals (parent (current-node)))))
|
||||||
|
(if (<= count 0)
|
||||||
|
result
|
||||||
|
(loop (string-append result %arg-choice-opt-close-str%)(- count 1))
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
( literal ")" )
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
(element function
|
||||||
|
(let* ((function-name (data (current-node)))
|
||||||
|
(linkend
|
||||||
|
(string-append
|
||||||
|
"function."
|
||||||
|
(string-replace
|
||||||
|
(string-replace function-name "_" "-")
|
||||||
|
"::" ".")))
|
||||||
|
(target (element-with-id linkend))
|
||||||
|
(parent-gi (gi (parent))))
|
||||||
|
(cond
|
||||||
|
;; function names should be plain in FUNCDEF
|
||||||
|
((equal? parent-gi "funcdef")
|
||||||
|
(process-children))
|
||||||
|
|
||||||
|
;; if a valid ID for the target function is not found, or if the
|
||||||
|
;; FUNCTION tag is within the definition of the same function,
|
||||||
|
;; make it bold, add (), but don't make a link
|
||||||
|
((or (node-list-empty? target)
|
||||||
|
(equal? (case-fold-down
|
||||||
|
(data (node-list-first
|
||||||
|
(select-elements
|
||||||
|
(node-list-first
|
||||||
|
(children
|
||||||
|
(select-elements
|
||||||
|
(children
|
||||||
|
(ancestor-member (parent) (list "refentry")))
|
||||||
|
"refnamediv")))
|
||||||
|
"refname"))))
|
||||||
|
function-name))
|
||||||
|
($bold-seq$
|
||||||
|
(make sequence
|
||||||
|
(process-children)
|
||||||
|
(literal "()"))))
|
||||||
|
|
||||||
|
;; else make a link to the function and add ()
|
||||||
|
(else
|
||||||
|
(make element gi: "A"
|
||||||
|
attributes: (list
|
||||||
|
(list "HREF" (href-to target)))
|
||||||
|
($bold-seq$
|
||||||
|
(make sequence
|
||||||
|
(process-children)
|
||||||
|
(literal
|
||||||
|
)
|
||||||
|
(literal "()"))))))))
|
||||||
|
|
||||||
|
(element command
|
||||||
|
(let* ((command-name (data (current-node)))
|
||||||
|
(linkend
|
||||||
|
(string-append
|
||||||
|
"language.function."
|
||||||
|
(string-replace
|
||||||
|
(string-replace command-name "_" ".")
|
||||||
|
"::" ".")))
|
||||||
|
(target (element-with-id linkend))
|
||||||
|
(parent-gi (gi (parent))))
|
||||||
|
(cond
|
||||||
|
;; function names should be plain in FUNCDEF
|
||||||
|
((equal? parent-gi "funcdef")
|
||||||
|
(process-children))
|
||||||
|
|
||||||
|
;; if a valid ID for the target function is not found, or if the
|
||||||
|
;; FUNCTION tag is within the definition of the same function,
|
||||||
|
;; make it bold, add (), but don't make a link
|
||||||
|
((or (node-list-empty? target)
|
||||||
|
(equal? (case-fold-down
|
||||||
|
(data (node-list-first
|
||||||
|
(select-elements
|
||||||
|
(node-list-first
|
||||||
|
(children
|
||||||
|
(select-elements
|
||||||
|
(children
|
||||||
|
(ancestor-member (parent) (list "refentry")))
|
||||||
|
"refnamediv")))
|
||||||
|
"refname"))))
|
||||||
|
command-name))
|
||||||
|
($bold-seq$
|
||||||
|
(make sequence
|
||||||
|
(literal "{")
|
||||||
|
(process-children)
|
||||||
|
(literal "}"))))
|
||||||
|
|
||||||
|
;; else make a link to the function and add ()
|
||||||
|
(else
|
||||||
|
(make element gi: "A"
|
||||||
|
attributes: (list
|
||||||
|
(list "HREF" (href-to target)))
|
||||||
|
($bold-seq$
|
||||||
|
(make sequence
|
||||||
|
(literal "{")
|
||||||
|
(process-children)
|
||||||
|
(literal "}"))))))))
|
||||||
|
|
||||||
|
(element classname
|
||||||
|
(let* ((class-name (data (current-node)))
|
||||||
|
(linkend
|
||||||
|
(string-append
|
||||||
|
"class."
|
||||||
|
(string-replace
|
||||||
|
(case-fold-down class-name) "_" "-")))
|
||||||
|
(target (element-with-id linkend))
|
||||||
|
(parent-gi (gi (parent))))
|
||||||
|
(cond
|
||||||
|
;; function names should be plain in SYNOPSIS
|
||||||
|
((equal? parent-gi "synopsis")
|
||||||
|
(process-children))
|
||||||
|
|
||||||
|
;; if a valid ID for the target class is not found, or if the
|
||||||
|
;; CLASSNAME tag is within the definition of the same class,
|
||||||
|
;; make it bold, but don't make a link
|
||||||
|
((or (node-list-empty? target)
|
||||||
|
(equal? (case-fold-down
|
||||||
|
(data (node-list-first
|
||||||
|
(select-elements
|
||||||
|
(node-list-first
|
||||||
|
(children
|
||||||
|
(select-elements
|
||||||
|
(children
|
||||||
|
(ancestor-member (parent) (list "refentry")))
|
||||||
|
"refnamediv")))
|
||||||
|
"refname"))))
|
||||||
|
class-name))
|
||||||
|
($bold-seq$
|
||||||
|
(process-children)))
|
||||||
|
|
||||||
|
;; else make a link to the function and add ()
|
||||||
|
(else
|
||||||
|
(make element gi: "A"
|
||||||
|
attributes: (list
|
||||||
|
(list "HREF" (href-to target)))
|
||||||
|
($bold-seq$
|
||||||
|
(process-children)))))))
|
||||||
|
|
||||||
|
|
||||||
|
(element constant
|
||||||
|
(let* ((constant-name (data (current-node)))
|
||||||
|
(linkend
|
||||||
|
(string-append "constant."
|
||||||
|
(case-fold-down
|
||||||
|
(string-replace constant-name "_" "-"))))
|
||||||
|
(target (element-with-id linkend))
|
||||||
|
(parent-gi (gi (parent))))
|
||||||
|
(cond
|
||||||
|
; ;; constant names should be plain in FUNCDEF
|
||||||
|
; ((equal? parent-gi "funcdef")
|
||||||
|
; (process-children))
|
||||||
|
|
||||||
|
;; if a valid ID for the target constant is not found, or if the
|
||||||
|
;; CONSTANT tag is within the definition of the same constant,
|
||||||
|
;; make it bold, add (), but don't make a link
|
||||||
|
((or (node-list-empty? target)
|
||||||
|
(equal? (case-fold-down
|
||||||
|
(data (node-list-first
|
||||||
|
(select-elements
|
||||||
|
(node-list-first
|
||||||
|
(children
|
||||||
|
(select-elements
|
||||||
|
(children
|
||||||
|
(ancestor-member (parent) (list "refentry")))
|
||||||
|
"refnamediv")))
|
||||||
|
"refname"))))
|
||||||
|
constant-name))
|
||||||
|
($bold-mono-seq$
|
||||||
|
(process-children)))
|
||||||
|
|
||||||
|
;; else make a link to the function and add ()
|
||||||
|
(else
|
||||||
|
(make element gi: "A"
|
||||||
|
attributes: (list
|
||||||
|
(list "HREF" (href-to target)))
|
||||||
|
($bold-mono-seq$
|
||||||
|
(process-children)))))))
|
||||||
|
|
||||||
|
|
||||||
|
(element example
|
||||||
|
(make sequence
|
||||||
|
(make element gi: "TABLE"
|
||||||
|
attributes: (list
|
||||||
|
(list "WIDTH" "100%")
|
||||||
|
(list "BORDER" "0")
|
||||||
|
(list "CELLPADDING" "0")
|
||||||
|
(list "CELLSPACING" "0")
|
||||||
|
(list "CLASS" "EXAMPLE"))
|
||||||
|
(make element gi: "TR"
|
||||||
|
(make element gi: "TD"
|
||||||
|
($formal-object$))))))
|
||||||
|
|
||||||
|
|
||||||
|
(element (paramdef parameter)
|
||||||
|
(make sequence
|
||||||
|
font-posture: 'italic
|
||||||
|
(process-children-trim)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
(mode book-titlepage-recto-mode
|
||||||
|
(element authorgroup
|
||||||
|
(process-children))
|
||||||
|
|
||||||
|
(element author
|
||||||
|
(let ((author-name (author-string))
|
||||||
|
(author-affil (select-elements (children (current-node))
|
||||||
|
(normalize "affiliation"))))
|
||||||
|
(make sequence
|
||||||
|
(make element gi: "DIV"
|
||||||
|
attributes: (list (list "CLASS" (gi)))
|
||||||
|
(literal author-name))
|
||||||
|
(process-node-list author-affil))))
|
||||||
|
)
|
||||||
|
|
||||||
|
(define (chunk-element-list)
|
||||||
|
(list (normalize "preface")
|
||||||
|
(normalize "chapter")
|
||||||
|
(normalize "appendix")
|
||||||
|
(normalize "article")
|
||||||
|
(normalize "glossary")
|
||||||
|
(normalize "bibliography")
|
||||||
|
(normalize "index")
|
||||||
|
(normalize "colophon")
|
||||||
|
(normalize "setindex")
|
||||||
|
(normalize "reference")
|
||||||
|
(normalize "refentry")
|
||||||
|
(normalize "part")
|
||||||
|
(normalize "sect1")
|
||||||
|
(normalize "sect2")
|
||||||
|
(normalize "section")
|
||||||
|
(normalize "book") ;; just in case nothing else matches...
|
||||||
|
(normalize "set") ;; sets are definitely chunks...
|
||||||
|
))
|
||||||
|
|
||||||
|
(define ($section-body$)
|
||||||
|
(make element gi: "DIV"
|
||||||
|
attributes: (list (list "CLASS" (gi)))
|
||||||
|
($section-separator$)
|
||||||
|
($section-title$)
|
||||||
|
|
||||||
|
(if (or (not (node-list-empty? (select-elements (children (current-node))
|
||||||
|
(normalize "sect2"))))
|
||||||
|
(not (node-list-empty? (select-elements (children (current-node))
|
||||||
|
(normalize "sect3")))))
|
||||||
|
(build-toc (current-node) 1)
|
||||||
|
(empty-sosofo))
|
||||||
|
|
||||||
|
(process-children)))
|
||||||
|
|
21
docs/dsssl/html.dsl
Normal file
21
docs/dsssl/html.dsl
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
|
||||||
|
<!ENTITY docbook.dsl SYSTEM "/usr/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl" CDATA DSSSL>
|
||||||
|
<!ENTITY html-common.dsl SYSTEM "html-common.dsl">
|
||||||
|
<!ENTITY common.dsl SYSTEM "common.dsl">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<style-sheet>
|
||||||
|
<style-specification id="docbook-smarty-html" use="docbook">
|
||||||
|
<style-specification-body>
|
||||||
|
|
||||||
|
(define %html-ext% ".html")
|
||||||
|
|
||||||
|
&html-common.dsl;
|
||||||
|
&common.dsl;
|
||||||
|
|
||||||
|
</style-specification-body>
|
||||||
|
</style-specification>
|
||||||
|
|
||||||
|
<external-specification id="docbook" document="docbook.dsl">
|
||||||
|
|
||||||
|
</style-sheet>
|
21
docs/dsssl/php.dsl
Normal file
21
docs/dsssl/php.dsl
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
<!DOCTYPE style-sheet PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
|
||||||
|
<!ENTITY docbook.dsl SYSTEM "/usr/share/sgml/docbook/dsssl-stylesheets/html/docbook.dsl" CDATA DSSSL>
|
||||||
|
<!ENTITY html-common.dsl SYSTEM "html-common.dsl">
|
||||||
|
<!ENTITY common.dsl SYSTEM "common.dsl">
|
||||||
|
]>
|
||||||
|
|
||||||
|
<style-sheet>
|
||||||
|
<style-specification id="docbook-smarty-html" use="docbook">
|
||||||
|
<style-specification-body>
|
||||||
|
|
||||||
|
(define %html-ext% ".php")
|
||||||
|
|
||||||
|
&html-common.dsl;
|
||||||
|
&common.dsl;
|
||||||
|
|
||||||
|
</style-specification-body>
|
||||||
|
</style-specification>
|
||||||
|
|
||||||
|
<external-specification id="docbook" document="docbook.dsl">
|
||||||
|
|
||||||
|
</style-sheet>
|
Reference in New Issue
Block a user