Add function for reading an 'environ'
* geesh/environment.scm (environ->alist): New function. * tests/environment.scm: Test it.
This commit is contained in:
parent
d7d26534b2
commit
737ed6a1b7
|
@ -18,14 +18,17 @@
|
|||
|
||||
(define-module (geesh environment)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (<environment>
|
||||
make-environment
|
||||
environment?
|
||||
var-ref
|
||||
var-ref*
|
||||
set-var!
|
||||
environment->environ))
|
||||
environment->environ
|
||||
environ->alist))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -77,3 +80,10 @@ precedence over the ones in @var{env}."
|
|||
(cons (string-append name "=" value) acc)
|
||||
(cons name seen))))
|
||||
(() acc))))
|
||||
|
||||
(define (environ->alist environ)
|
||||
(define (string-split-1 str char_pred)
|
||||
(and=> (string-index str char_pred)
|
||||
(lambda (index)
|
||||
`(,(substring str 0 index) . ,(substring str (1+ index))))))
|
||||
(filter-map (cut string-split-1 <> #\=) environ))
|
||||
|
|
|
@ -57,7 +57,7 @@
|
|||
(var-ref env "FOO")))
|
||||
|
||||
;;;
|
||||
;;; Making an 'environ'.
|
||||
;;; Making and reading 'environs'.
|
||||
;;;
|
||||
|
||||
(define (subset? lst1 lst2)
|
||||
|
@ -103,4 +103,9 @@ to order."
|
|||
(environ (environment->environ env bindings)))
|
||||
(set=? environ '("FOO=ghi" "BAR=def"))))
|
||||
|
||||
(test-assert "Creates an alist from an environ"
|
||||
(let* ((environ '("FOO=abc" "BAR=def"))
|
||||
(alist (environ->alist environ)))
|
||||
(set=? alist '(("FOO" . "abc") ("BAR" . "def")))))
|
||||
|
||||
(test-end)
|
||||
|
|
Loading…
Reference in New Issue