From 8a3b11d1eb21e54b4f3a3cbceffed8ce2c11512e Mon Sep 17 00:00:00 2001 From: Christopher Baines Date: Tue, 6 Aug 2019 20:17:27 +0100 Subject: 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. --- guix/import/utils.scm | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'guix/import') 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))) -- cgit v1.2.3