factor out transformers
This commit is contained in:
		
							parent
							
								
									c85bcfc502
								
							
						
					
					
						commit
						03eeb86a5f
					
				| 
						 | 
				
			
			@ -313,15 +313,19 @@
 | 
			
		|||
				   ,(and attributes (cdr attributes))
 | 
			
		||||
				   ))))))
 | 
			
		||||
 | 
			
		||||
(define (make-number-input-field . maybe-further-attributes)
 | 
			
		||||
(define make-number-input-field
 | 
			
		||||
  (let ((number-input-field-transformer
 | 
			
		||||
	 (lambda (string)
 | 
			
		||||
	   (or (string->number string)
 | 
			
		||||
	       (error "wrong type")))
 | 
			
		||||
	 ))
 | 
			
		||||
    (lambda maybe-further-attributes)
 | 
			
		||||
  (let ((name (generate-input-field-name "number")))
 | 
			
		||||
    (optionals maybe-further-attributes
 | 
			
		||||
	((attributes XML-attribute?))
 | 
			
		||||
      (make-input-field 
 | 
			
		||||
       name
 | 
			
		||||
       (lambda (string)
 | 
			
		||||
	 (or (string->number string)
 | 
			
		||||
	     (error "wrong type")))
 | 
			
		||||
       number-input-field-transformer
 | 
			
		||||
       `(input (@ (type "text")
 | 
			
		||||
		  (name ,name)
 | 
			
		||||
		  ,(and attributes (cdr attributes))))))))
 | 
			
		||||
| 
						 | 
				
			
			@ -357,14 +361,13 @@
 | 
			
		|||
;; preselected option: (selected)
 | 
			
		||||
;; changed return value: (value new-value)
 | 
			
		||||
;; returns a select input field with several options
 | 
			
		||||
(define (make-select-input-fields options . maybe-further-attributes)
 | 
			
		||||
(define (make-select-input-field options . maybe-further-attributes)
 | 
			
		||||
  (let ((name (generate-input-field-name "select")))
 | 
			
		||||
    (optionals maybe-further-attributes
 | 
			
		||||
	((attributes XML-attribute?))
 | 
			
		||||
      (make-input-field 
 | 
			
		||||
       name
 | 
			
		||||
       (lambda (select)
 | 
			
		||||
	 select)		;FIXME[extension] refer to list elements
 | 
			
		||||
       identity				;FIXME[extension] refer to list elements
 | 
			
		||||
       `(select (@ ((name ,name)
 | 
			
		||||
		    ,(and attributes (cdr attributes))))
 | 
			
		||||
		#\newline
 | 
			
		||||
| 
						 | 
				
			
			@ -440,17 +443,19 @@
 | 
			
		|||
	     ,(and button-caption `(value ,button-caption))
 | 
			
		||||
	     ,(and attributes (cdr attributes)))))
 | 
			
		||||
 | 
			
		||||
(define (string-or-symbol? a) 
 | 
			
		||||
  (or (string? a)
 | 
			
		||||
      (symbol? a)))
 | 
			
		||||
 | 
			
		||||
(define (make-submit-button . maybe-further-attributes)
 | 
			
		||||
  (optionals maybe-further-attributes
 | 
			
		||||
      ((button-caption (lambda (a) (or (string? a)
 | 
			
		||||
				       (symbol? a))))
 | 
			
		||||
      ((button-caption string-or-symbol?)
 | 
			
		||||
       (attributes XML-attribute?))
 | 
			
		||||
    (make-button "submit" button-caption attributes)))
 | 
			
		||||
 | 
			
		||||
(define (make-reset-button . maybe-further-attributes)
 | 
			
		||||
  (optionals maybe-further-attributes
 | 
			
		||||
      ((button-caption (lambda (a) (or (string? a)
 | 
			
		||||
				       (symbol? a))))
 | 
			
		||||
      ((button-caption string-or-symbol?)
 | 
			
		||||
       (attributes XML-attribute?))
 | 
			
		||||
    (make-button "reset" button-caption attributes)))
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue