jah Sun Aug 26 10:00:31 2001 EDT
Modified files:
/phpdoc print.dsl.in
Log:
Added link generation from function name to the target.
Index: phpdoc/print.dsl.in
diff -u phpdoc/print.dsl.in:1.15 phpdoc/print.dsl.in:1.16
--- phpdoc/print.dsl.in:1.15 Wed May 16 13:52:54 2001
+++ phpdoc/print.dsl.in Sun Aug 26 10:00:30 2001
@@ -7,7 +7,7 @@
<!--
- $Id: print.dsl.in,v 1.15 2001/05/16 17:52:54 hholzgra Exp $
+ $Id: print.dsl.in,v 1.16 2001/08/26 14:00:30 jah Exp $
This file contains printout-specific stylesheet customization.
@@ -304,18 +304,47 @@
(make sequence ( literal " (...)" )))
(element function
- (cond
- ;; function names should be plain in FUNCDEF
- ((equal? (gi (parent)) "funcdef")
- (process-children))
-
- ;; else make the function name bold and add "()"
- ;; we should add some cross-reference here later
- (else
- ($bold-seq$
- (make sequence
- (process-children)
- (literal "()"))))))
+ (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 sequence
+ (make link
+ destination: (node-list-address target)
+ )
+ (literal "()"))))))