summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNic Ferier <nic@ferrier.me.uk>2012-10-06 21:23:09 +0100
committerNic Ferier <nic@ferrier.me.uk>2012-10-06 21:23:09 +0100
commit6f9c013207def1674df681ec03480500e61c07b1 (patch)
tree9e918ed7d2470068a7f1f71238f4377ba765bf56
parenta2dd39e017933a80cf7de9c2fcd837d16c45c348 (diff)
updates (mainly driven by db)
-rw-r--r--kv.el20
1 files changed, 12 insertions, 8 deletions
diff --git a/kv.el b/kv.el
index e567e11..65d5cf7 100644
--- a/kv.el
+++ b/kv.el
@@ -4,7 +4,7 @@
;; Author: Nic Ferrier <nferrier@ferrier.me.uk>
;; Keywords: lisp
-;; Version: 0.0.7
+;; Version: 0.0.8
;; Maintainer: Nic Ferrier <nferrier@ferrier.me.uk>
;; Created: 7th September 2012
@@ -74,6 +74,14 @@ Returns the value looked up by KEY that passes, so normally:
(let ((v (assoc key alist)))
(and v (equal (cdr v) value) v)))
+(defun kvassoqc (key alist)
+ "String or symbol assoc."
+ (let ((v (or
+ (assq (if (symbolp key) key (intern key)) alist)
+ (or (assoc key alist)
+ ;; not sure about this behaviour... see test
+ (assoc (symbol-name key) alist))))) v))
+
(defun kvassoq= (key value alist)
"Test the VALUE with the value bound to KEY in ALIST.
@@ -85,11 +93,7 @@ Returns the value looked up by KEY that passes, so normally:
KEY . VALUE
"
- (let ((v (or
- (assq (if (symbolp key) key (intern key)) alist)
- (or (assoc key alist)
- ;; not sure about this behaviour... see test
- (assoc (symbol-name key) alist)))))
+ (let ((v (kvassoqc key alist)))
(and v (equal (cdr v) value) v)))
(defun* kvquery->func (query &key (equal-func 'kvassoc))
@@ -117,8 +121,8 @@ predicate."
(defun kvplist2get (plist2 keyword value)
"Get the plist with KEYWORD / VALUE from the list of plists."
(loop for plist in plist2
- if (equal (plist-get keyword) value)
- return plist))
+ if (equal (plist-get plist keyword) value)
+ return plist))
(defun kvalist->plist (alist)
"Convert an alist to a plist."