From 8773648e35b18b2f4b29e43258d1eb38b792f27c Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Sat, 25 Aug 2012 13:12:33 +0200 Subject: utils: Change `substitute*' to accept a list of files to patch. * guix/build/utils.scm (substitute*): Support a list of files as the first argument. --- guix/build/utils.scm | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) (limited to 'guix/build/utils.scm') diff --git a/guix/build/utils.scm b/guix/build/utils.scm index 7e572c0388..13ea4b82d8 100644 --- a/guix/build/utils.scm +++ b/guix/build/utils.scm @@ -210,10 +210,9 @@ (define-syntax let-matches ((let-matches index match () body ...) (begin body ...)))) -(define-syntax-rule (substitute* file - ((regexp match-var ...) body ...) - ...) - "Substitute REGEXP in FILE by the string returned by BODY. BODY is +(define-syntax substitute* + (syntax-rules () + "Substitute REGEXP in FILE by the string returned by BODY. BODY is evaluated with each MATCH-VAR bound to the corresponding positional regexp sub-expression. For example: @@ -230,12 +229,17 @@ (define-syntax-rule (substitute* file When one of the MATCH-VAR is `_', no variable is bound to the corresponding match substring." - (substitute file - (list (cons regexp - (lambda (m p) - (let-matches 0 m (match-var ...) - (display (begin body ...) p)))) - ...))) + ((substitute* (file ...) clause ...) + (begin + (substitute* file clause ...) + ...)) + ((substitute* file ((regexp match-var ...) body ...) ...) + (substitute file + (list (cons regexp + (lambda (m p) + (let-matches 0 m (match-var ...) + (display (begin body ...) p)))) + ...))))) ;;; -- cgit v1.2.3