emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ebdb b52cdc0 265/350: Record-insert|delete-field method


From: Eric Abrahamsen
Subject: [elpa] externals/ebdb b52cdc0 265/350: Record-insert|delete-field methods can find their own slots
Date: Mon, 14 Aug 2017 11:46:51 -0400 (EDT)

branch: externals/ebdb
commit b52cdc02627412f32a92afea5509818081fea6d1
Author: Eric Abrahamsen <address@hidden>
Commit: Eric Abrahamsen <address@hidden>

    Record-insert|delete-field methods can find their own slots
    
    * ebdb.el (ebdb-record-insert-field, ebdb-record-delete-field):
      Provide implementation of these methods where slot is nil, they find
      the slot, and then pass off to more specific methods.
    
    Step one in refactoring ebdb-record-field-slot-query inside of
    ebdb-record-insert|delete-field.
---
 ebdb.el | 26 ++++++++++++++++++++++++--
 1 file changed, 24 insertions(+), 2 deletions(-)

diff --git a/ebdb.el b/ebdb.el
index dab4f98..ef833e8 100644
--- a/ebdb.el
+++ b/ebdb.el
@@ -1987,7 +1987,9 @@ record."
       (ebdb-record-insert-field record slot new-field)
       new-field)))
 
-(cl-defmethod ebdb-record-insert-field ((record ebdb-record) slot field)
+(cl-defmethod ebdb-record-insert-field ((record ebdb-record)
+                                       (slot symbol)
+                                       (field ebdb-field))
   "Add FIELD to RECORD's SLOT."
   ;; First, the databases "actually" add the field to the record, ie
   ;; persistence.  The rest of this method is just updating the
@@ -2003,7 +2005,18 @@ record."
     (ebdb-init-field field record))
   field)
 
-(cl-defmethod ebdb-record-delete-field ((record ebdb-record) slot field)
+(cl-defmethod ebdb-record-insert-field ((record ebdb-record)
+                                       slot
+                                       (field ebdb-field))
+  (let ((real-slot
+        (car (ebdb-record-field-slot-query
+              (eieio-object-class record)
+              `(nil . ,(eieio-object-class field))))))
+    (cl-call-next-method record real-slot field)))
+
+(cl-defmethod ebdb-record-delete-field ((record ebdb-record)
+                                       (slot symbol)
+                                       (field ebdb-field))
   "Delete FIELD from RECORD's SLOT, or set SLOT to nil, if no FIELD."
   ;; We don't use `slot-makeunbound' because that's a huge pain in the
   ;; ass, and why would anyone want those errors?
@@ -2014,6 +2027,15 @@ record."
     (setf (slot-value record slot) nil))
   (ebdb-delete-field field record))
 
+(cl-defmethod ebdb-record-delete-field ((record ebdb-record)
+                                       slot
+                                       (field ebdb-field))
+  (let ((real-slot
+        (car (ebdb-record-field-slot-query
+              (eieio-object-class record)
+              `(nil . ,(eieio-object-class field))))))
+    (cl-call-next-method record real-slot field)))
+
 (cl-defgeneric ebdb-record-field-slot-query (record-class &optional query 
alist)
   "Ask RECORD-CLASS for information about its interactively-settable fields.
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]