X-Git-Url: https://git.jsancho.org/?p=guile-click.git;a=blobdiff_plain;f=click%2Fvalue.scm;fp=click%2Fvalue.scm;h=f42eb2f3b1921a065e0a3a9202ed48e77874e16a;hp=ec00445a0ec7ac104907f35a06c18795fd1a8a21;hb=6d51ec37e2379849f195976753e4b6919c0cfe1d;hpb=27b4e1f5bfac39323bdff089aac094b8e98b0258 diff --git a/click/value.scm b/click/value.scm index ec00445..f42eb2f 100644 --- a/click/value.scm +++ b/click/value.scm @@ -32,14 +32,25 @@ (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)))