Skip to content
Snippets Groups Projects
Commit 7f006053 authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

Demacroify subroutine in parse-process-spec

parent d36a06ec
No related branches found
No related tags found
No related merge requests found
...@@ -174,25 +174,23 @@ ...@@ -174,25 +174,23 @@
(clps-current-argument c) nil))) (clps-current-argument c) nil)))
(defun parse-process-spec (spec) (defun parse-process-spec (spec)
(macrolet ((make-sequence-instance (spec-type args) (labels ((make-sequence-instance (spec-type args)
`(make-instance (make-instance spec-type :processes
',spec-type :processes (loop :for process :in (mapcar 'parse-process-spec args)
(loop :for process :in (mapcar 'parse-process-spec ,args) :nconc (if (typep process spec-type)
:nconc (etypecase process (sequence-processes process)
(,spec-type (sequence-processes process)) (list process))))))
(sequence-spec (list process))
(command-spec (list process)))))))
(match spec (match spec
(`(pipe ,@args) (`(pipe ,@args)
(make-sequence-instance pipe-spec args)) (make-sequence-instance 'pipe-spec args))
(`(or ,@args) (`(or ,@args)
(make-sequence-instance or-spec args)) (make-sequence-instance 'or-spec args))
(`(and ,@args) (`(and ,@args)
(make-sequence-instance and-spec args)) (make-sequence-instance 'and-spec args))
(`(progn ,@args) (`(progn ,@args)
(make-sequence-instance progn-spec args)) (make-sequence-instance 'progn-spec args))
(`(fork ,@args) (`(fork ,@args)
(make-sequence-instance fork-spec args)) (make-sequence-instance 'fork-spec args))
(`(,_ ,@_) (`(,_ ,@_)
(let ((c (make-instance 'command-parse))) (let ((c (make-instance 'command-parse)))
(dolist (elem spec) (dolist (elem spec)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment