aboutsummaryrefslogtreecommitdiff
path: root/src/property.lisp
diff options
context:
space:
mode:
authorSean Whitton <spwhitton@spwhitton.name>2021-03-21 10:26:12 -0700
committerSean Whitton <spwhitton@spwhitton.name>2021-03-21 10:26:12 -0700
commit962fee7586445a8d900927beba7a4df8cef2d937 (patch)
tree2ff567988222c69b895481411e4e3e41b6087183 /src/property.lisp
parent847520da96836aaff641c4c82b87511fc65770c9 (diff)
downloadconsfigurator-962fee7586445a8d900927beba7a4df8cef2d937.tar.gz
factor out PROPAPPLY and PROPUNAPPLY
Signed-off-by: Sean Whitton <spwhitton@spwhitton.name>
Diffstat (limited to 'src/property.lisp')
-rw-r--r--src/property.lisp24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/property.lisp b/src/property.lisp
index 95bacd0..a2bf2e2 100644
--- a/src/property.lisp
+++ b/src/property.lisp
@@ -85,19 +85,23 @@
(defun propappcheck (propapp)
(apply #'propcheck propapp))
+(defun propapply (prop &rest args)
+ (let ((check (get prop 'check)))
+ (if (and check (apply check args))
+ :no-change
+ (apply (get prop 'papply (constantly :no-change)) args))))
+
(defun propappapply (propapp)
- (destructuring-bind (prop . args) propapp
- (let ((check (get prop 'check)))
- (if (and check (apply check args))
- :no-change
- (apply (get prop 'papply (constantly :no-change)) args)))))
+ (apply #'propapply propapp))
+
+(defun propunapply (prop &rest args)
+ (let ((check (get prop 'check)))
+ (if (and check (not (apply check args)))
+ :no-change
+ (apply (get prop 'unapply (constantly :no-change)) args))))
(defun propappunapply (propapp)
- (destructuring-bind (prop . args) propapp
- (let ((check (get prop 'check)))
- (if (and check (not (apply check args)))
- :no-change
- (apply (get prop 'unapply (constantly :no-change)) args)))))
+ (apply #'propappunapply propapp))
(defvar *known-properties* nil
"All properties whose definitions have been loaded.")