summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArun Isaac2021-02-27 23:52:43 +0530
committerArun Isaac2021-02-27 23:52:43 +0530
commite6235229aa0d471b14fcdbf92a60cafb3467f275 (patch)
tree2ed5b15ae9f3d178b88dbd3b8d1044f93cdf587b
parentc37a8e33f790b385ec1f913b062ad5b5f4bbe96e (diff)
downloadccwl-e6235229aa0d471b14fcdbf92a60cafb3467f275.tar.gz
ccwl-e6235229aa0d471b14fcdbf92a60cafb3467f275.tar.lz
ccwl-e6235229aa0d471b14fcdbf92a60cafb3467f275.zip
Rewrite parse-command using break-pair.
* ccwl/ccwl.scm (parse-command): Rewrite using break-pair.
-rw-r--r--ccwl/ccwl.scm29
1 files changed, 10 insertions, 19 deletions
diff --git a/ccwl/ccwl.scm b/ccwl/ccwl.scm
index 0d261d6..afcb176 100644
--- a/ccwl/ccwl.scm
+++ b/ccwl/ccwl.scm
@@ -100,25 +100,16 @@ last element of LST, PRED is passed that element alone."
"Parse ARGS, a list of command line arguments and return two
lists---the base command and the actual arguments."
(let ((base-command arguments
- (break (match-lambda
- ((arg next)
- (and (string? arg)
- (string-prefix? "-" arg)
- (input? next))))
- (map list args (drop args 1)))))
- (values (append (map (match-lambda
- ((arg next) arg))
- base-command)
- (if (input? (last args))
- (list)
- (take-right args 1)))
- (parse-arguments
- (append (map (match-lambda
- ((arg next) arg))
- arguments)
- (if (input? (last args))
- (take-right args 1)
- (list)))))))
+ (break-pair (case-lambda
+ ((arg next)
+ (and (string? arg)
+ (string-prefix? "-" arg)
+ (input? next)))
+ ((last-arg)
+ (input? last-arg)))
+ args)))
+ (values base-command
+ (parse-arguments arguments))))
(define (input->tree input)
"Convert INPUT, an <input> object, to a tree."