From: tmorioka Date: Fri, 28 Feb 1997 04:56:22 +0000 (+0000) Subject: atype functions were moved to mime-def.el. X-Git-Tag: Hokutetsu-Ishikawa-new~225 X-Git-Url: http://git.chise.org/gitweb/?a=commitdiff_plain;h=6fa7e3a38803bf0841cede1beeb3d7e19aa72646;p=elisp%2Fsemi.git atype functions were moved to mime-def.el. --- diff --git a/mime-play.el b/mime-play.el index fcd6120..6d06072 100644 --- a/mime-play.el +++ b/mime-play.el @@ -5,7 +5,7 @@ ;; Author: MORIOKA Tomohiko ;; Created: 1995/9/26 (separated from tm-view.el) ;; Renamed: 1997/2/21 from tm-play.el -;; Version: $Id: mime-play.el,v 0.8 1997-02-28 02:33:20 tmorioka Exp $ +;; Version: $Id: mime-play.el,v 0.9 1997-02-28 04:56:22 tmorioka Exp $ ;; Keywords: MIME, multimedia, mail, news ;; This file is part of SEMI (SEMI is Emacs MIME Interfaces). @@ -97,180 +97,6 @@ ;;; @ method selector ;;; -;;; @@ field -;;; - -(defun put-fields (tp c) - (catch 'tag - (let ((r tp) f ret) - (while r - (setq f (car r)) - (if (not (if (setq ret (assoc (car f) c)) - (equal (cdr ret)(cdr f)) - (setq c (cons f c)) - )) - (throw 'tag 'error)) - (setq r (cdr r)) - )) - c)) - - -;;; @@ field unifier -;;; - -(defun field-unifier-for-default (a b) - (let ((ret - (cond ((equal a b) a) - ((null (cdr b)) a) - ((null (cdr a)) b) - ))) - (if ret - (list nil ret nil) - ))) - -(defun field-unifier-for-mode (a b) - (let ((va (cdr a))) - (if (if (consp va) - (member (cdr b) va) - (equal va (cdr b)) - ) - (list nil b nil) - ))) - -(defun field-unify (a b) - (let ((sym (intern (concat "field-unifier-for-" (symbol-value (car a)))))) - (or (fboundp sym) - (setq sym (function field-unifier-for-default)) - ) - (funcall sym a b) - )) - - -;;; @@ type unifier -;;; - -(defun assoc-unify (class instance) - (catch 'tag - (let ((cla (copy-alist class)) - (ins (copy-alist instance)) - (r class) - cell aret ret prev rest) - (while r - (setq cell (car r)) - (setq aret (assoc (car cell) ins)) - (if aret - (if (setq ret (field-unify cell aret)) - (progn - (if (car ret) - (setq prev (put-alist (car (car ret)) - (cdr (car ret)) - prev)) - ) - (if (nth 2 ret) - (setq rest (put-alist (car (nth 2 ret)) - (cdr (nth 2 ret)) - rest)) - ) - (setq cla (put-alist (car cell)(cdr (nth 1 ret)) cla)) - (setq ins (del-alist (car cell) ins)) - ) - (throw 'tag nil) - )) - (setq r (cdr r)) - ) - (setq r (copy-alist ins)) - (while r - (setq cell (car r)) - (setq aret (assoc (car cell) cla)) - (if aret - (if (setq ret (field-unify cell aret)) - (progn - (if (car ret) - (setq prev (put-alist (car (car ret)) - (cdr (car ret)) - prev)) - ) - (if (nth 2 ret) - (setq rest (put-alist (car (nth 2 ret)) - (cdr (nth 2 ret)) - rest)) - ) - (setq cla (del-alist (car cell) cla)) - (setq ins (put-alist (car cell)(cdr (nth 1 ret)) ins)) - ) - (throw 'tag nil) - )) - (setq r (cdr r)) - ) - (list prev (append cla ins) rest) - ))) - -(defun get-unified-alist (db al) - (let ((r db) ret) - (catch 'tag - (while r - (if (setq ret (nth 1 (assoc-unify (car r) al))) - (throw 'tag ret) - ) - (setq r (cdr r)) - )))) - -(defun delete-atype (atl al) - (let* ((r atl) ret oal) - (setq oal - (catch 'tag - (while r - (if (setq ret (nth 1 (assoc-unify (car r) al))) - (throw 'tag (car r)) - ) - (setq r (cdr r)) - ))) - (delete oal atl) - )) - -(defun remove-atype (sym al) - (and (boundp sym) - (set sym (delete-atype (eval sym) al)) - )) - -(defun replace-atype (atl old-al new-al) - (let* ((r atl) ret oal) - (if (catch 'tag - (while r - (if (setq ret (nth 1 (assoc-unify (car r) old-al))) - (throw 'tag (rplaca r new-al)) - ) - (setq r (cdr r)) - )) - atl))) - -(defun set-atype (sym al &rest options) - (if (null (boundp sym)) - (set sym al) - (let* ((replacement (memq 'replacement options)) - (ignore-fields (car (cdr (memq 'ignore options)))) - (remove (or (car (cdr (memq 'remove options))) - (let ((ral (copy-alist al))) - (mapcar (function - (lambda (type) - (setq ral (del-alist type ral)) - )) - ignore-fields) - ral))) - ) - (set sym - (or (if replacement - (replace-atype (eval sym) remove al) - ) - (cons al - (delete-atype (eval sym) remove) - ) - ))))) - - -;;; @@ main selector -;;; - (defun mime/get-content-decoding-alist (al) (get-unified-alist mime/content-decoding-condition al) )