Function: eudc-filter-duplicate-attributes
eudc-filter-duplicate-attributes is a byte-compiled function defined
in eudc.el.gz.
Signature
(eudc-filter-duplicate-attributes RECORD)
Documentation
Filter RECORD according to eudc-duplicate-attribute-handling-method.
Source Code
;; Defined in /usr/src/emacs/lisp/net/eudc.el.gz
(defun eudc-filter-duplicate-attributes (record)
"Filter RECORD according to `eudc-duplicate-attribute-handling-method'."
(let ((rec record)
unique
duplicates
result)
;; Search for multiple records
(while (and rec
(not (listp (cdar rec))))
(setq rec (cdr rec)))
(if (null (cdar rec))
(list record) ; No duplicate attrs in this record
(mapc (lambda (field)
(if (listp (cdr field))
(setq duplicates (cons field duplicates))
(setq unique (cons field unique))))
record)
(setq result (list unique))
;; Map over the record fields that have multiple values
(mapc
(lambda (field)
(let ((method (if (consp eudc-duplicate-attribute-handling-method)
(cdr
(assq
(or
(car
(rassq
(car field)
(symbol-value
eudc-protocol-attributes-translation-alist)))
(car field))
eudc-duplicate-attribute-handling-method))
eudc-duplicate-attribute-handling-method)))
(cond
((or (null method) (eq 'list method))
(setq result
(eudc-add-field-to-records field result)))
((eq 'first method)
(setq result
(eudc-add-field-to-records (cons (car field)
(cadr field))
result)))
((eq 'concat method)
(setq result
(eudc-add-field-to-records (cons (car field)
(mapconcat
#'identity
(cdr field)
"\n"))
result)))
((eq 'duplicate method)
(setq result
(eudc-distribute-field-on-records field result))))))
duplicates)
result)))