diff options
Diffstat (limited to 'bits/bbdb-filters/bbdb-eudora.el')
-rw-r--r-- | bits/bbdb-filters/bbdb-eudora.el | 284 |
1 files changed, 0 insertions, 284 deletions
diff --git a/bits/bbdb-filters/bbdb-eudora.el b/bits/bbdb-filters/bbdb-eudora.el deleted file mode 100644 index 2c2f848..0000000 --- a/bits/bbdb-filters/bbdb-eudora.el +++ /dev/null @@ -1,284 +0,0 @@ -;;; This file is part of the BBDB Filters Package. BBDB Filters Package is a -;;; collection of input and output filters for BBDB. -;;; -;;; Copyright (C) 1995 Neda Communications, Inc. -;;; Prepared by Mohsen Banan (mohsen@neda.com) -;;; -;;; This library is free software; you can redistribute it and/or modify -;;; it under the terms of the GNU Library General Public License as -;;; published by the Free Software Foundation; either version 2 of the -;;; License, or (at your option) any later version. This library is -;;; distributed in the hope that it will be useful, but WITHOUT ANY -;;; WARRANTY; without even the implied warranty of MERCHANTABILITY or -;;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public -;;; License for more details. You should have received a copy of the GNU -;;; Library General Public License along with this library; if not, write -;;; to the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, -;;; USA. -;;; -;;; This is bbdb-eudora.el -;;; -;;; -;;; RCS: bbdb-eudora.el,v 1.1.1.1 1995/08/07 08:43:09 mohsen Exp -;;; -;;; a copy-and-edit job on bbdb-print.el - -;;; To use this, add the following to your .emacs -;;; and strip ";;;XXX" -;;; - -;;;XXX;; BBDB Filters -;;;XXX(load "bbdb-eudora") - -;;;XXX(setq bbdb-eudora-nndbase-filename -;;;XXX (concat "/dos/m/eudora.mai/" (user-login-name) "/nndbase.txt")) -;;;XXX;;; And then -;;;XXX;; (bbdb-eudora-nndbase-output) - -;;;XXX(setq bbdb-eudora-rcpdbase-filename -;;;XXX (concat "/dos/m/eudora.mai/" (user-login-name) "/rcpdbase.txt")) -;;;XXX;;; And then -;;;XXX;; (bbdb-eudora-rcpdbase-output) - -(require 'bbdb-print) -(require 'basic-ext) - -(defvar bbdb-eudora-nndbase-filename "~/nndbase.txt" - "*Default file name for bbdb-output-eudora printouts of BBDB database.") - -(defun bbdb-eudora-nndbase-output (to-file) - "Print the selected BBDB entries" - (interactive (list (read-file-name "Print To File: " bbdb-eudora-nndbase-filename))) - (setq bbdb-eudora-nndbase-filename (expand-file-name to-file)) - (let ((current-letter t) - (records (progn (set-buffer bbdb-buffer-name) - bbdb-records))) - (find-file bbdb-eudora-nndbase-filename) - (delete-region (point-min) (point-max)) - (while records - (setq current-letter - (boe-format-record (car (car records)) current-letter)) - (setq records (cdr records))) - (goto-char (point-min)) - (message "Eudora nickname file %s generated." bbdb-eudora-nndbase-filename))) - -(defsubst boe-print-if-not-blank (string prepend-string &rest more) - "If STRING is not null, then return it with PREPEND-STRING in front and concatenated -with rest of arguments. If it is null, then all arguments are -ignored and the null string is returned." - (if (or (null string) (equal "" string)) - "" - (apply 'concat prepend-string string more))) - -(defun boe-output-this-record-p (name comp net phones addrs notes) - "Examine NAME COMP NET PHONES ADDRS NOTES and return t if -the current record is to be output by bbdb-output-eudora." - ;; if name is non-nil, output it - (cond ((and name net) t) - (t nil)) - ) - - -(defun boe-format-record (record &optional current-letter brief) - "Insert the bbdb RECORD in Eudora format. -Optional CURRENT-LETTER is the section we're in -- if this is non-nil and -the first letter of the sortkey of the record differs from it, a new section -heading will be output \(an arg of t will always produce a heading). -The new current-letter is the return value of this function. -Someday, optional third arg BRIEF will produce one-line format." - (bbdb-debug (if (bbdb-record-deleted-p record) - (error "plus ungood: formatting deleted record"))) - - (let* ((bbdb-elided-display bbdb-print-elide) - (first-letter - (substring (concat (bbdb-record-sortkey record) "?") 0 1)) - (name (and (bbdb-field-shown-p 'name) - (or (bbdb-record-getprop record 'tex-name) - (bbdb-record-name record)))) - (comp (and (bbdb-field-shown-p 'company) - (bbdb-record-company record))) - (net (and (bbdb-field-shown-p 'net) - (bbdb-record-net record))) - (phones (and (bbdb-field-shown-p 'phone) - (bbdb-record-phones record))) - (addrs (and (bbdb-field-shown-p 'address) - (bbdb-record-addresses record))) - (notes (bbdb-record-raw-notes record)) - (begin (point)) - (bare t)) - - ;; Section header, if neccessary. - - (if (and current-letter (not (string-equal first-letter current-letter))) - (message "Now processing \"%s\" entries..." (upcase first-letter))) - - (if (boe-output-this-record-p name comp net phones addrs notes) - (progn - - ;; Eudora nickname in canonical form (e.g., mohsen.banan) - ;; - (if name - (insert (format "<%s>
\n" name))) - - ;; Email address -- just use their first address. - ;; Make all dots legal line-breaks. - ;; - ;; output in the following format: "<Pretty Name>" <email address> - (if net - (let ((net-addr (car net)) - (start 0)) - (insert (format ">\"%s\" <%s>
\n" name net-addr)))) - - ;; start a Eudora nndbase.txt notes section for this nickname - ;; by inserting the nickname again - - (if name - (insert (format "<%s>
\n" name))) - - ;; Company - ;; - (if comp - (insert (format "> Company: %s
\n" - (boe-mangle-if-multi-line comp)))) - - ;; Phone numbers - ;; - (while phones - (let ((place (aref (car phones) 0)) - (number (bbdb-phone-string (car phones)))) - (setq bare nil) - (insert (format "> Telephone: %s%s
\n" - (boe-print-if-not-blank place "" ": ") - number)) - (setq phones (cdr phones)))) - - ;; Addresses - ;; - (while addrs - (let ((addr (car addrs))) - (setq bare nil) - (insert - (format - "> Address:
\n%s" - (concat - (boe-print-if-not-blank (bbdb-address-street1 addr) "> " "
\n") - (boe-print-if-not-blank (bbdb-address-street2 addr) "> " "
\n") - (boe-print-if-not-blank (bbdb-address-street3 addr) "> ") - (boe-print-if-not-blank (bbdb-address-city addr) "> ") - (if (and (not (equal "" (bbdb-address-city addr))) - (not (equal "" (bbdb-address-state addr)))) - ", ") - (boe-print-if-not-blank (bbdb-address-state addr) "" " ") - (boe-print-if-not-blank (bbdb-address-zip-string addr) "" "
\n"))))) - (setq addrs (cdr addrs))) - - ;; BBDB Notes - - (if (stringp notes) - (setq notes (list (cons 'notes notes)))) - (while notes - (let ((thisnote (car notes))) - (if (bbdb-field-shown-p (car thisnote)) - (progn - (setq bare nil) - (if (eq 'notes (car thisnote)) - (insert (format "> Notes: %s
\n" - (boe-mangle-if-multi-line (cdr thisnote)))) - (insert (format "> Note [%s]: %s
\n" - (symbol-name (car thisnote)) - (boe-mangle-if-multi-line (cdr thisnote)))))))) - (setq notes (cdr notes))) - - ;; If record is bare, delete anything we may have inserted. - ;; otherwise, mark the end of this record. - - (if bare - (delete-region begin (point)) - - (setq current-letter first-letter)) - - )) - - ;; return current letter - current-letter)) - - -(defun boe-mangle-if-multi-line (string) - "If STRING is has multiple lines, mangle it for output to Eudora" - (if (string-match "\n" string) - (string-replace-regexp string "\n" "
\n> ") - string)) - - -;;;;;;;;;;;; Eudora Receipient DataBase (rcpdbase.txt) ;;;;;;;;;;; - -;;;(setq bbdb-eudora-rcpdbase-filename "/dos/m/eudora.mai/mohsen/rcpdbase.txt") -(defvar bbdb-eudora-rcpdbase-filename "~/rcpdbase.txt" - "*Default file name for bbdb-output-eudora printouts of BBDB database.") - -(defun bbdb-eudora-rcpdbase-output (to-file) - "Print the selected BBDB entries" - (interactive (list (read-file-name "Print To File: " bbdb-eudora-rcpdbase-filename))) - (setq bbdb-eudora-rcpdbase-filename (expand-file-name to-file)) - (let ((current-letter t) - (records (progn (set-buffer bbdb-buffer-name) - bbdb-records))) - (find-file bbdb-eudora-rcpdbase-filename) - (delete-region (point-min) (point-max)) - (while records - (setq current-letter - (boe-rcpdbase-format-record (car (car records)) current-letter)) - (setq records (cdr records))) - (goto-char (point-min)) - (message "Eudora rcpt. file %s generated." bbdb-eudora-nndbase-filename))) - - - -(defun boe-rcpdbase-format-record (record &optional current-letter brief) - "Insert the bbdb RECORD in Eudora format. -Optional CURRENT-LETTER is the section we're in -- if this is non-nil and -the first letter of the sortkey of the record differs from it, a new section -heading will be output \(an arg of t will always produce a heading). -The new current-letter is the return value of this function. -Someday, optional third arg BRIEF will produce one-line format." - (bbdb-debug (if (bbdb-record-deleted-p record) - (error "plus ungood: formatting deleted record"))) - - (let* ((bbdb-elided-display bbdb-print-elide) - (first-letter - (substring (concat (bbdb-record-sortkey record) "?") 0 1)) - (name (and (bbdb-field-shown-p 'name) - (or (bbdb-record-getprop record 'tex-name) - (bbdb-record-name record)))) - (comp (and (bbdb-field-shown-p 'company) - (bbdb-record-company record))) - (net (and (bbdb-field-shown-p 'net) - (bbdb-record-net record))) - (phones (and (bbdb-field-shown-p 'phone) - (bbdb-record-phones record))) - (addrs (and (bbdb-field-shown-p 'address) - (bbdb-record-addresses record))) - (notes (bbdb-record-raw-notes record)) - (begin (point)) - (bare t)) - - ;; Section header, if neccessary. - - (if (and current-letter - (not (string-equal first-letter current-letter))) - (message "Now processing \"%s\" entries..." (upcase first-letter))) - - (if (boe-output-this-record-p name comp net phones addrs notes) - (progn - - ;; Eudora nickname in canonical form (e.g., mohsen.banan) - ;; - (if name - (insert (format "%s
\n" name))) - - (setq current-letter first-letter) - - )) - - ;; return current letter - current-letter)) |