From mboxrd@z Thu Jan  1 00:00:00 1970
From: Matt Price <moptop99@gmail.com>
Subject: fuzzy matching of parameters
Date: Thu, 1 Dec 2016 21:11:19 -0500
Message-ID: <CAN_Dec8js7xhAbbb6qFPX92EieikkjaZuOS5TOK3M2ia5O50TA@mail.gmail.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=94eb2c05f6bc312a680542a374ad
Return-path: <emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org>
Received: from eggs.gnu.org ([2001:4830:134:3::10]:35683)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <moptop99@gmail.com>) id 1cCdJq-00080s-H4
	for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 21:11:23 -0500
Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <moptop99@gmail.com>) id 1cCdJp-0004nW-7v
	for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 21:11:22 -0500
Received: from mail-io0-x22d.google.com ([2607:f8b0:4001:c06::22d]:34962)
	by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16)
	(Exim 4.71) (envelope-from <moptop99@gmail.com>) id 1cCdJp-0004n3-0h
	for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 21:11:21 -0500
Received: by mail-io0-x22d.google.com with SMTP id a124so458467797ioe.2
	for <emacs-orgmode@gnu.org>; Thu, 01 Dec 2016 18:11:21 -0800 (PST)
List-Id: "General discussions about Org-mode." <emacs-orgmode.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-orgmode>,
	<mailto:emacs-orgmode-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/archive/html/emacs-orgmode/>
List-Post: <mailto:emacs-orgmode@gnu.org>
List-Help: <mailto:emacs-orgmode-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-orgmode>,
	<mailto:emacs-orgmode-request@gnu.org?subject=subscribe>
Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org
Sender: "Emacs-orgmode"
	<emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org>
To: Org Mode <emacs-orgmode@gnu.org>

--94eb2c05f6bc312a680542a374ad
Content-Type: text/plain; charset=UTF-8

I have just done something I'm very excited about.  Given a directory name
(the variable ~assignment~ in this case) and a list of student info, search
through the directory for files whose names contain the student names, and
attach those to newly created subtrees.

Before now, manually attaching those files has been a real pain, so it's
great to have this automated! However, sometimes the name I have on file
doesn't quite match the submitted name. In particular, my Chinese students
usually have an English first name that we use in class, and a
transliterated Chinese personal name that is used in official documents
(like my class list).  I would like to first try to match the whole name,
and if that fails, attempt some kind of "fuzzy" match of the name. I'm not
sure the best way to go about it.

Any suggestions? Here is, I think, the relevant section of code (I can post
the wider context if that would be helpful). Thanks!

Matt

(mapcar (lambda (stu)
                          (let ((name (car stu))
                                (email (cdr stu))
                                )
                            (insert (format "\n** %s" name))
                            (org-todo 'todo)
                            (org-set-property "MAIL_TO" email)
                            (org-set-property "MAIL_SUBJECT"
                                              (format "Comments on %s
Assignment (%s)"

(mwp-org-get-parent-headline) name ))
                            ;; try to attach files, if possible
                            (condition-case nil
                                (let* (( afiles (directory-files
assignment  nil name)))
                                  (if afiles
                                      (dolist (f afiles)
                                        (org-attach-attach (concat
(file-name-directory (buffer-file-name)) assignment "/" f) ))
                                    (message "No files match name of %s"
name)))
                              (error (message "Unable to attach file
belonging to student")))
                            (save-excursion
                              (org-mark-subtree)
                              (org-cycle nil))
                            )) students)

--94eb2c05f6bc312a680542a374ad
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: base64

PGRpdiBkaXI9Imx0ciI+PGRpdj48ZGl2PjxkaXY+SSBoYXZlIGp1c3QgZG9uZSBzb21ldGhpbmcg
SSYjMzk7bSB2ZXJ5IGV4Y2l0ZWQgYWJvdXQuwqAgR2l2ZW4gYSBkaXJlY3RvcnkgbmFtZSAodGhl
IHZhcmlhYmxlIH5hc3NpZ25tZW50fiBpbiB0aGlzIGNhc2UpIGFuZCBhIGxpc3Qgb2Ygc3R1ZGVu
dCBpbmZvLCBzZWFyY2ggdGhyb3VnaCB0aGUgZGlyZWN0b3J5IGZvciBmaWxlcyB3aG9zZSBuYW1l
cyBjb250YWluIHRoZSBzdHVkZW50IG5hbWVzLCBhbmQgYXR0YWNoIHRob3NlIHRvIG5ld2x5IGNy
ZWF0ZWQgc3VidHJlZXMuwqAgPGJyPjxicj48L2Rpdj5CZWZvcmUgbm93LCBtYW51YWxseSBhdHRh
Y2hpbmcgdGhvc2UgZmlsZXMgaGFzIGJlZW4gYSByZWFsIHBhaW4sIHNvIGl0JiMzOTtzIGdyZWF0
IHRvIGhhdmUgdGhpcyBhdXRvbWF0ZWQhIEhvd2V2ZXIsIHNvbWV0aW1lcyB0aGUgbmFtZSBJIGhh
dmUgb24gZmlsZSBkb2VzbiYjMzk7dCBxdWl0ZSBtYXRjaCB0aGUgc3VibWl0dGVkIG5hbWUuIElu
IHBhcnRpY3VsYXIsIG15IENoaW5lc2Ugc3R1ZGVudHMgdXN1YWxseSBoYXZlIGFuIEVuZ2xpc2gg
Zmlyc3QgbmFtZSB0aGF0IHdlIHVzZSBpbiBjbGFzcywgYW5kIGEgdHJhbnNsaXRlcmF0ZWQgQ2hp
bmVzZSBwZXJzb25hbCBuYW1lIHRoYXQgaXMgdXNlZCBpbiBvZmZpY2lhbCBkb2N1bWVudHMgKGxp
a2UgbXkgY2xhc3MgbGlzdCkuwqAgSSB3b3VsZCBsaWtlIHRvIGZpcnN0IHRyeSB0byBtYXRjaCB0
aGUgd2hvbGUgbmFtZSwgYW5kIGlmIHRoYXQgZmFpbHMsIGF0dGVtcHQgc29tZSBraW5kIG9mICZx
dW90O2Z1enp5JnF1b3Q7IG1hdGNoIG9mIHRoZSBuYW1lLiBJJiMzOTttIG5vdCBzdXJlIHRoZSBi
ZXN0IHdheSB0byBnbyBhYm91dCBpdC7CoCA8YnI+PGJyPjwvZGl2PkFueSBzdWdnZXN0aW9ucz8g
SGVyZSBpcywgSSB0aGluaywgdGhlIHJlbGV2YW50IHNlY3Rpb24gb2YgY29kZSAoSSBjYW4gcG9z
dCB0aGUgd2lkZXIgY29udGV4dCBpZiB0aGF0IHdvdWxkIGJlIGhlbHBmdWwpLiBUaGFua3MhPGJy
Pjxicj48L2Rpdj5NYXR0PGJyPjxkaXY+PGRpdj48ZGl2Pjxicj4obWFwY2FyIChsYW1iZGEgKHN0
dSk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg
KGxldCAoKG5hbWUgKGNhciBzdHUpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZW1haWwgKGNkciBzdHUpKTxicj7CoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oCApPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoCAoaW5zZXJ0IChmb3JtYXQgJnF1b3Q7XG4qKiAlcyZxdW90OyBuYW1lKSk8YnI+wqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChvcmctdG9k
byAmIzM5O3RvZG8pPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoCAob3JnLXNldC1wcm9wZXJ0eSAmcXVvdDtNQUlMX1RPJnF1b3Q7IGVtYWls
KTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqAgKG9yZy1zZXQtcHJvcGVydHkgJnF1b3Q7TUFJTF9TVUJKRUNUJnF1b3Q7PGJyPsKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZm9ybWF0ICZxdW90O0NvbW1lbnRzIG9uICVzIEFz
c2lnbm1lbnQgKCVzKSZxdW90Ozxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgIChtd3Atb3JnLWdldC1wYXJlbnQtaGVhZGxpbmUpIG5hbWUgKSk8YnI+
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDs7
IHRyeSB0byBhdHRhY2ggZmlsZXMsIGlmIHBvc3NpYmxlPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoY29uZGl0aW9uLWNhc2UgbmlsPGJy
PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgIChsZXQqICgoIGFmaWxlcyAoZGlyZWN0b3J5LWZpbGVzIGFzc2lnbm1lbnTCoCBuaWwg
bmFtZSkpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqAgKGlmIGFmaWxlczxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAoZG9s
aXN0IChmIGFmaWxlcyk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIChvcmctYXR0YWNoLWF0dGFj
aCAoY29uY2F0IChmaWxlLW5hbWUtZGlyZWN0b3J5IChidWZmZXItZmlsZS1uYW1lKSkgYXNzaWdu
bWVudCAmcXVvdDsvJnF1b3Q7IGYpICkpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG1lc3NhZ2UgJnF1b3Q7
Tm8gZmlsZXMgbWF0Y2ggbmFtZSBvZiAlcyZxdW90OyBuYW1lKSkpPGJyPsKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKGVycm9yIChtZXNz
YWdlICZxdW90O1VuYWJsZSB0byBhdHRhY2ggZmlsZSBiZWxvbmdpbmcgdG8gc3R1ZGVudCZxdW90
OykpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqAgKHNhdmUtZXhjdXJzaW9uPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9yZy1tYXJrLXN1YnRyZWUpPGJyPsKgwqDCoMKg
wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKG9yZy1j
eWNsZSBuaWwpKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC
oMKgwqDCoMKgwqAgKSkgc3R1ZGVudHMpPGJyPjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pg0K
--94eb2c05f6bc312a680542a374ad--