summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2021-10-18 00:37:01 +0530
committerArun Isaac2021-10-18 00:37:01 +0530
commit83f4156efe0b01991bb09570b8bb90fccf8a9a51 (patch)
treee141c1c6307bda6048ef1133d0a5085787462ec0
parent6fa1e2a28e90b3ccd12502d39c67526242f6f175 (diff)
downloadccwl-83f4156efe0b01991bb09570b8bb90fccf8a9a51.tar.gz
ccwl-83f4156efe0b01991bb09570b8bb90fccf8a9a51.tar.lz
ccwl-83f4156efe0b01991bb09570b8bb90fccf8a9a51.zip
ccwl: Implement rename to rename keys between steps.
* ccwl/ccwl.scm (collect-steps): Implement rename to rename keys between steps.
-rw-r--r--ccwl/ccwl.scm13
1 files changed, 12 insertions, 1 deletions
diff --git a/ccwl/ccwl.scm b/ccwl/ccwl.scm
index 27012ec..9b0c049 100644
--- a/ccwl/ccwl.scm
+++ b/ccwl/ccwl.scm
@@ -255,7 +255,7 @@ command is not defined, return #f."
output keys and a list of steps. INPUT-KEYS is a list of supplied
input keys. Keys are represented by <key> objects, and steps are
represented by <step> objects."
- (syntax-case x (pipe tee)
+ (syntax-case x (pipe tee rename)
;; pipe
((pipe expressions ...)
(foldn (lambda (expression input-keys steps)
@@ -268,6 +268,17 @@ represented by <step> objects."
((tee expressions ...)
(append-mapn (cut collect-steps <> input-keys)
#'(expressions ...)))
+ ;; rename keys
+ ((rename mapping ...)
+ (values (map (lambda (key)
+ (or (any (match-lambda
+ ((new . old)
+ (and (eq? old (key-name key))
+ (set-key-name key (keyword->symbol new)))))
+ (syntax->datum (pairify #'(mapping ...))))
+ key))
+ input-keys)
+ (list)))
;; commands with only a single input when only a single key is
;; available at this step and when no inputs are passed to it
((command (step-id))