[mew-dist 24003] alternative-fullname on mew-ldap.el

Nakagawa Yasuharu yasuharu.nakagawa at example.com
2003年 9月 11日 (木) 12:53:04 JST


中川@東京武蔵野です こんにちは

mew-win32での話のついでに、mew-ldap.elに追加を行ってみました。

M-TABで表示されるユーザ名が"cn"固定になっていたところを、
  mew-ldap-alternative-fullname-list
という変数を作って、そこから指定するようにしてあります。
.mew.elなどで、
   (setq mew-ldap-alternative-fullname-list '("ou" "sn" "givenname"))
という具合に、表示するデータや順番を変更できます。

# ふぅ。。。 みようみまねですが、やっぱりlispは難しい。。。:-)
おかしなところがあるかもしれませんが、ご指摘いただければ幸いです。

--- mew-ldap.el.orig	Thu Sep 11 12:38:13 2003
+++ mew-ldap.el	Thu Sep 11 12:43:55 2003
@@ -399,6 +399,10 @@
 And you can use completion string like:
  \"gotoh/Shunichi_Goto/Goto/Shunichi\"")
 
+(defvar mew-ldap-alternative-fullname-list nil
+  "*List of fullname list
+")
+
 (defconst mew-ldap-program "ldapsearch"
   "*Program name to make query to LDAP.
 It should be ldapsearch come with OpenLDAP and compatibles.  If you
@@ -704,7 +708,21 @@
 			   "unknown")))
 	     mew-ldap-alternative-dn-type-list
 	     ","))
-   
+
+(defun mew-ldap-make-alternative-fullname (attr-list)
+  "make full-name from mew-ldap-alternative-fullname-list"
+  (mapconcat '(lambda (str)
+		(if (string-match "[a-z]+= *\\(.*\\)" str)
+		    (mew-match-string 1 str)))
+	     (mew-split 
+	      (mapconcat (lambda (type)
+			   (format "%s=%s" (upcase type)
+				   (or (mew-ldap-get-value type attr-list)
+				       "unknown")))
+			 mew-ldap-alternative-fullname-list
+			 ",")
+	      ?,)
+	     " "))
 
 (defun mew-ldap-make-addrbook-alist (word entries)
   "Make addrbook format alist using WORD with ENTRIES.  
@@ -742,7 +760,9 @@
 	    values  (mew-ldap-get-matched-values
 		     word mew-ldap-search-attribute-type-list ent)
 	    mail    (mew-ldap-get-value "mail" ent)
-	    name    (mew-ldap-get-value "cn" ent)
+	    name    (if mew-ldap-alternative-fullname-list
+			   (mew-ldap-make-alternative-fullname ent)
+			 (mew-ldap-get-value "cn" ent))
 	    dn      (if mew-ldap-alternative-dn-type-list
 			(mew-ldap-make-alternative-dn ent)
 		      (mew-ldap-get-value "dn" ent))

--



Mew-dist メーリングリストの案内