aboutsummaryrefslogtreecommitdiff
path: root/src/propspec.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-05-03 15:44:37 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-05-06 12:23:51 -0700
commitc2430567f4982fa55b53341cd2d7552671935a5c (patch)
tree551eeae620941a60b8af06628798f9498c9ee048 /src/propspec.lisp
parent69bb8712cfb2f13cfca50efbded62624a0a6dcdf (diff)
downloadconsfigurator-c2430567f4982fa55b53341cd2d7552671935a5c.tar.gz
add & use PROPAPP macro
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/propspec.lisp')
-rw-r--r--src/propspec.lisp19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/propspec.lisp b/src/propspec.lisp
index 16df661..525429b 100644
--- a/src/propspec.lisp
+++ b/src/propspec.lisp
@@ -243,15 +243,18 @@ unevaluated propspec are defined before that unevaluated propspec is
processed."
(cell-error-name condition)))))
-(defmacro props (combinator &rest forms)
- "Apply variadic COMBINATOR to FORMS and convert from an unevaluated property
-application specification expression to a property application specification
-expression."
+(defmacro propapp (form)
+ "Convert a single element of an unevaluated property application specification
+expression to a property application specification expression."
(flet ((evaluate (propapp)
`(list ',(car propapp) ,@(cdr propapp))))
- (handler-case
- (map-propspec-propapps #'evaluate (cons combinator forms) t)
+ (handler-case (map-propspec-propapps #'evaluate form t)
(ambiguous-propspec (c)
;; resignal with a more specific error message
- (error 'ambiguous-unevaluated-propspec
- :name (cell-error-name c))))))
+ (error 'ambiguous-unevaluated-propspec :name (cell-error-name c))))))
+
+(defmacro props (combinator &rest forms)
+ "Apply variadic COMBINATOR to FORMS and convert from an unevaluated property
+application specification expression to a property application specification
+expression."
+ `(propapp ,(cons combinator forms)))