diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2021-03-21 10:26:12 -0700 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2021-03-21 10:26:12 -0700 |
commit | 962fee7586445a8d900927beba7a4df8cef2d937 (patch) | |
tree | 2ff567988222c69b895481411e4e3e41b6087183 /src/property.lisp | |
parent | 847520da96836aaff641c4c82b87511fc65770c9 (diff) | |
download | consfigurator-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.lisp | 24 |
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.") |