emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Wes Hardaker <wjhns209@hardakers.net>
To: Eric S Fraga <e.fraga@ucl.ac.uk>
Cc: emacs-orgmode@gnu.org
Subject: Re: org-contacts from bbdb: a starting solution
Date: Wed, 09 Mar 2011 07:18:20 -0800	[thread overview]
Message-ID: <sd8vwoxqyr.fsf@wjh.hardakers.net> (raw)
In-Reply-To: <87pqq0ms7p.fsf@ucl.ac.uk> (Eric S. Fraga's message of "Wed, 09 Mar 2011 11:46:50 +0000")

[-- Attachment #1: Type: text/plain, Size: 727 bytes --]

>>>>> On Wed, 09 Mar 2011 11:46:50 +0000, Eric S Fraga <e.fraga@ucl.ac.uk> said:

ESF> Are you intending to extend your code for not-so-appropriate fields?  If
ESF> so, I definitely would like to see the addresses converted and it would
ESF> be quite useful to have the notes converted entry text for the org entry
ESF> (i.e. not a property).

I thought about trying to create a generic 'list' of matching 'this' to
'that' but hadn't gotten to it yet.

I'd be happy to change the notes so it went under the properties, if
that's what you want?  I think you want what is attached.
-- 
Wes Hardaker                                     
My Pictures:  http://capturedonearth.com/
My Thoughts:  http://pontifications.hardakers.net/

[-- Attachment #2: bbdb-to-org-contacts.el --]
[-- Type: text/plain, Size: 2298 bytes --]

(require 'bbdb)
(require 'bbdb-com)

(defvar bbdb-to-org-contacts-record-prefix "***")

(defvar bbdb-to-org-contacts-record-blanks "   ")

(defun bbdb-to-org-contacts (to-file)
  "outputs a org-contacts file"
  (interactive (list (read-file-name "Save in file: ")))
  (let* ((filename (expand-file-name to-file))
	 (records (bbdb-records)))
    (find-file filename)
    (while records
      (bbdb-record-to-org-record (car records))
      (setq records (cdr records)))
    ))

    
(defun bbdb-record-to-org-record (record)
  "converts a single record"
  (let* (
         (name    (bbdb-record-name record))
         (company (bbdb-record-company record))
         (net     (bbdb-record-net record))
         (aka     (bbdb-record-aka record))
         (phone   (bbdb-record-phones record))
         (address (bbdb-record-addresses record))
         (notes   (bbdb-record-notes record))
	 )
    
    (insert
     (format "%s %s\n" bbdb-to-org-contacts-record-prefix name))
    (insert
     (format "%s :PROPERTIES:\n" bbdb-to-org-contacts-record-blanks))

    (when aka
      (insert
       (format "%s :AKA:\t%s\n" bbdb-to-org-contacts-record-blanks
	       (mapconcat (function (lambda(str) str)) aka ", "))))

    (when net
      (insert
       (format "%s :EMAIL:\t%s\n" bbdb-to-org-contacts-record-blanks
	       (mapconcat (function (lambda(str) str)) net " "))))

    (when company
      (insert
       (format "%s :COMPANY:\t%s\n" bbdb-to-org-contacts-record-blanks company)))

    (when phone
      (insert
       (mapconcat
	(function (lambda(rec) 
		    (if (stringp (elt rec 1))
			(format "%s :PHONE_%s:\t%s"
				bbdb-to-org-contacts-record-blanks
				(upcase (elt rec 0))
				(elt rec 1))
		      (let ((len (length rec))
			    (count 2)
			    (output (format "%d" (elt rec 1))))
			(while (< count (1- len))
			  (setq output
				(concat output
					(format "-%d"
						(elt rec count))))
			  (setq count (1+ count)))
			(format "%s :PHONE_%s:\t%s"
				bbdb-to-org-contacts-record-blanks
				(upcase (elt rec 0)) output)))))
	phone "\n"))
      (insert "\n"))

    (insert
     (format "%s :END:\n" bbdb-to-org-contacts-record-blanks))

    (when notes
      (insert
       (format "%s - %s\n" bbdb-to-org-contacts-record-blanks notes)))

    ))


(provide 'bbdb-to-org-contacts)

  reply	other threads:[~2011-03-09 15:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-03-08 20:51 org-contacts from bbdb: a starting solution Wes Hardaker
2011-03-09 11:46 ` Eric S Fraga
2011-03-09 15:18   ` Wes Hardaker [this message]
2011-03-10 13:07     ` Eric S Fraga

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=sd8vwoxqyr.fsf@wjh.hardakers.net \
    --to=wjhns209@hardakers.net \
    --cc=e.fraga@ucl.ac.uk \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).