X-Git-Url: http://git.chise.org/gitweb/?a=blobdiff_plain;f=mel.el;h=ca0352d9ea4078fe81958102c8f62f8e7f9c85e4;hb=9c35f952ff580a51b8f908b766c7df285a3fc147;hp=27d045cfa21dfb3ce76504be95f2327229d13138;hpb=545abdc395d66e7b41c39adee0684bc0ca9ee58f;p=elisp%2Fflim.git diff --git a/mel.el b/mel.el index 27d045c..ca0352d 100644 --- a/mel.el +++ b/mel.el @@ -27,24 +27,16 @@ ;;; Code: (require 'emu) -(or (fboundp 'write-region-as-binary) - (error "Please install latest APEL.")) - - -(defconst mel-version "7.2") ;;; @ variable ;;; -(defvar mime-temp-directory (or (getenv "MIME_TMP_DIR") - (getenv "TM_TMP_DIR") - "/tmp/") - "*Directory for temporary files.") - (defvar base64-dl-module (and (fboundp 'dynamic-link) - (expand-file-name "base64.so" exec-directory))) + (let ((path (expand-file-name "base64.so" exec-directory))) + (and (file-exists-p path) + path)))) ;;; @ autoload @@ -155,6 +147,19 @@ STRING is content-transfer-encoding. FUNCTION is region decoder.") ;;;###autoload +(defvar mime-string-decoding-method-alist + '(("base64" . base64-decode-string) + ("quoted-printable" . quoted-printable-decode-string) + ("7bit" . identity) + ("8bit" . identity) + ("binary" . identity) + ) + "Alist of encoding vs. corresponding method to decode string. +Each element looks like (STRING . FUNCTION). +STRING is content-transfer-encoding. +FUNCTION is string decoder.") + +;;;###autoload (defun mime-encode-region (start end encoding) "Encode region START to END of current buffer using ENCODING. ENCODING must be string. If ENCODING is found in @@ -188,6 +193,21 @@ region by its value." (funcall f start end) ))) +;;;###autoload +(defun mime-decode-string (string encoding) + "Decode STRING using ENCODING. +ENCODING must be string. If ENCODING is found in +`mime-string-decoding-method-alist' as its key, this function decodes +the STRING by its value." + (let ((f (cdr (assoc encoding mime-string-decoding-method-alist)))) + (if f + (funcall f string) + (with-temp-buffer + (insert string) + (mime-decode-region (point-min)(point-max) encoding) + (buffer-string) + )))) + ;;; @ file ;;;