mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-03 22:01:36 +01:00 
			
		
		
		
	
		
			
	
	
		
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			62 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								;; $Id$
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								;; This file is part of the Modular DocBook Stylesheet distribution.
							 | 
						||
| 
								 | 
							
								;; See ../README or http://nwalsh.com/docbook/dsssl/
							 | 
						||
| 
								 | 
							
								;;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (pi-value component piname)
							 | 
						||
| 
								 | 
							
								  ;; Returns the value of the (?piname value) PI (if one exists)
							 | 
						||
| 
								 | 
							
								  ;; as a child of component, otherwise returns #f
							 | 
						||
| 
								 | 
							
								  ;;
							 | 
						||
| 
								 | 
							
								  (let loop ((nl (select-by-class (children component) 'pi)))
							 | 
						||
| 
								 | 
							
								    (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
									#f
							 | 
						||
| 
								 | 
							
									(let ((pidata (node-property 'system-data (node-list-first nl))))
							 | 
						||
| 
								 | 
							
									  (if (and (> (string-length pidata) (string-length piname))
							 | 
						||
| 
								 | 
							
										   (equal? piname
							 | 
						||
| 
								 | 
							
											   (substring pidata 0 (string-length piname))))
							 | 
						||
| 
								 | 
							
									      (substring pidata
							 | 
						||
| 
								 | 
							
											 (+ (string-length piname) 1)
							 | 
						||
| 
								 | 
							
											 (string-length pidata))
							 | 
						||
| 
								 | 
							
									      (loop (node-list-rest nl)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (inherited-pi-value component piname)
							 | 
						||
| 
								 | 
							
								  (let loop ((value #f) (nd component))
							 | 
						||
| 
								 | 
							
								    (if (or value (node-list-empty? nd))
							 | 
						||
| 
								 | 
							
									value
							 | 
						||
| 
								 | 
							
									(loop (pi-value nd piname) (parent nd)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (dbhtml-findvalue pi-field-list name)
							 | 
						||
| 
								 | 
							
								  ;; pi-field-list is '(pitarget name1 value1 name2 value2 ...)
							 | 
						||
| 
								 | 
							
								  (let loop ((slist (cdr pi-field-list)))
							 | 
						||
| 
								 | 
							
								    (if (null? slist)
							 | 
						||
| 
								 | 
							
									#f
							 | 
						||
| 
								 | 
							
									(if (string=? (car slist) name)
							 | 
						||
| 
								 | 
							
									    (car (cdr slist))
							 | 
						||
| 
								 | 
							
									    (loop (cdr (cdr slist)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (dbhtml-value component name)
							 | 
						||
| 
								 | 
							
								  ;; Returns the value of "name='value'" in the <?dbhtml ...> PI
							 | 
						||
| 
								 | 
							
								  (let loop ((nl (select-by-class (children component) 'pi)))
							 | 
						||
| 
								 | 
							
								    (if (node-list-empty? nl)
							 | 
						||
| 
								 | 
							
									#f
							 | 
						||
| 
								 | 
							
									(let* ((pidata (node-property 'system-data (node-list-first nl)))
							 | 
						||
| 
								 | 
							
									       (pilist (if (and (> (string-length pidata) 7)
							 | 
						||
| 
								 | 
							
												(string=? (substring pidata 0 7) "dbhtml "))
							 | 
						||
| 
								 | 
							
											   (parse-starttag-pi pidata)
							 | 
						||
| 
								 | 
							
											   '()))
							 | 
						||
| 
								 | 
							
									       (value  (if (null? pilist) #f (dbhtml-findvalue pilist name))))
							 | 
						||
| 
								 | 
							
									  (if value
							 | 
						||
| 
								 | 
							
									      value
							 | 
						||
| 
								 | 
							
									      (loop (node-list-rest nl)))))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								(define (inherited-dbhtml-value component name)
							 | 
						||
| 
								 | 
							
								  (let loop ((value #f) (nd component))
							 | 
						||
| 
								 | 
							
								    (if (or value (node-list-empty? nd))
							 | 
						||
| 
								 | 
							
									value
							 | 
						||
| 
								 | 
							
									(loop (dbhtml-value nd name) (parent nd)))))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								;; EOF dbpi.dsl
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |