diff options
author | Christopher Baines <mail@cbaines.net> | 2019-08-06 20:17:27 +0100 |
---|---|---|
committer | Christopher Baines <mail@cbaines.net> | 2019-08-21 18:29:27 +0100 |
commit | 8a3b11d1eb21e54b4f3a3cbceffed8ce2c11512e (patch) | |
tree | 04d022a2fbf1c3d6d1826b3aeacea4bb5b2f2bc1 | |
parent | cad875350b0ecf838506fa293b29ffb33ab5d3bd (diff) | |
download | guix-8a3b11d1eb21e54b4f3a3cbceffed8ce2c11512e.tar guix-8a3b11d1eb21e54b4f3a3cbceffed8ce2c11512e.tar.gz |
import: utils: Add hash-ref*.
With the change to guile-json version 3, JSON objects are represented as hash
tables, rather than alists. The cpan importer uses assoc-ref* on a hash table,
so add an equivalent function for hash tables.
* guix/import/utils.scm (hash-ref*): New procedure.
-rw-r--r-- | guix/import/utils.scm | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/guix/import/utils.scm b/guix/import/utils.scm index 2a3b7341fb..ed6c3ce6af 100644 --- a/guix/import/utils.scm +++ b/guix/import/utils.scm @@ -47,6 +47,7 @@ flatten assoc-ref* + hash-ref* url-fetch guix-hash-url @@ -116,6 +117,15 @@ recursively apply the procedure to the sub-list." (assoc-ref alist key) (apply assoc-ref* (assoc-ref alist key) rest))) +(define (hash-ref* hash-table key . rest) + "Return the value for KEY from HASH-TABLE. For each additional key specified, +recursively apply the procedure to the sub-hash-table." + (if (hash-table? hash-table) + (if (null? rest) + (hash-ref hash-table key) + (apply hash-ref* (hash-ref hash-table key) rest)) + #f)) ; For consistency with assoc-ref* + (define (url-fetch url file-name) "Save the contents of URL to FILE-NAME. Return #f on failure." (parameterize ((current-output-port (current-error-port))) |