Add convenience function 'var-ref*'
* geesh/environment.scm (var-ref*): New public function. * geesh/word.scm (word->qword): Use it to simplify things.
This commit is contained in:
parent
da1746f2d6
commit
020adfc58b
|
@ -23,6 +23,7 @@
|
|||
make-environment
|
||||
environment?
|
||||
var-ref
|
||||
var-ref*
|
||||
set-var!
|
||||
environment->environ))
|
||||
|
||||
|
@ -50,6 +51,11 @@
|
|||
@var{name} is unset, return @code{#f}."
|
||||
(assoc-ref (environment-vars env) name))
|
||||
|
||||
(define (var-ref* env name)
|
||||
"Get the value of the variable @var{name} in @var{env}. If
|
||||
@var{name} is unset return @code{\"\"}."
|
||||
(or (var-ref env name) ""))
|
||||
|
||||
(define (set-var! env name val)
|
||||
"Set the variable @var{name} to @var{val} in @var{env}."
|
||||
(set-environment-vars! env (acons name val
|
||||
|
|
|
@ -112,7 +112,7 @@ and arithmetic substitions using the environment @var{env}."
|
|||
(('<sh-cmd-sub> . exps)
|
||||
((eval-cmd-sub) exps))
|
||||
(('<sh-ref> name)
|
||||
(or (var-ref env name) ""))
|
||||
(var-ref* env name))
|
||||
(('<sh-ref-or> name default)
|
||||
(or (var-ref env name)
|
||||
(word->qword env (or default ""))))
|
||||
|
@ -150,7 +150,7 @@ and arithmetic substitions using the environment @var{env}."
|
|||
(('<sh-ref-skip-min> name pattern) (error "Not implemented"))
|
||||
(('<sh-ref-skip-max> name pattern) (error "Not implemented"))
|
||||
(('<sh-ref-length> name)
|
||||
(number->string (string-length (or (var-ref env name) ""))))
|
||||
(number->string (string-length (var-ref* env name))))
|
||||
(_ (map (cut word->qword env <>) word))))
|
||||
|
||||
(define* (expand-word env word #:key (split? #t) (rhs-tildes? #f))
|
||||
|
|
Loading…
Reference in New Issue