]> git.jsancho.org Git - guile-click.git/blobdiff - click/value.scm
Type conversion
[guile-click.git] / click / value.scm
index ec00445a0ec7ac104907f35a06c18795fd1a8a21..f42eb2f3b1921a065e0a3a9202ed48e77874e16a 100644 (file)
         (else
          (let* ((option (car option-spec))
                 (option-name (car option))
-                (value (or (option-ref values option-name #f)
-                           (get-option-default-value option))))
+                (value (get-normalized-value values option option-name)))
            (cons (cons option-name value)
                  (get-values (cdr option-spec) values))))))
 
 
+(define (get-normalized-value values option option-name)
+  "Get value for option, converting from string to the appropriate value"
+  (let ((convert-proc (assoc-ref (option-type option) 'convert))
+        (value (option-ref values option-name #f)))
+    (cond ((and value (not (option-property option 'flag)))
+           (convert-proc value))
+          (value
+           value)
+          (else
+           (get-option-default-value option)))))
+
+
 (define* (get-option-default-value option #:optional (no-prompt #f))
-  "Get value for option, asking user if prompt property is set"
+  "Get default value for option, asking user if prompt property is set"
   (let ((default (option-property option 'default)))
     (if (not default)
         (let ((prompt (option-property option 'prompt)))