mime-parameters API (Re: FLIM 1.14 API (Re: flim-1_13-rfc2231 vs flim-1_14-rfc2231))
Shuhei KOBAYASHI
shuhei @ aqua.ocn.ne.jp
2001年 5月 26日 (土) 17:54:17 JST
>>>>> In <htxvgnl1z3z.fsf @ urania.kanji.zinbun.kyoto-u.ac.jp>,
>>>>> tomo @ kanji.zinbun.kyoto-u.ac.jp (守岡 知彦 / MORIOKA Tomohiko) wrote:
> `mime-parameters' 型が満たすべき条件と `mime-parameters' 型に関する
> API を追加するのが良いと思っています。
>>>>> In <htxsnihpcr5.fsf @ urania.kanji.zinbun.kyoto-u.ac.jp>,
>>>>> tomo @ kanji.zinbun.kyoto-u.ac.jp (守岡 知彦 / MORIOKA Tomohiko) wrote:
> ただ、alist としての実装を容認する形で mime-parameter 型に関する規定を
> FLIM 1.14 API に追加するのが望ましいと思います。
必要な API はまず,
* ある parameter の値を取得する.
それと, mmedit(?) が導入された時に必要になりそうなのが,
* ある parameter の値を設定する.
さらに, `mime-content-type-parameters' の使われ方を調べてみると,
* 全ての parameter に対して何らかの処理をする.
というのが必要になるでしょうか.
まずは parameter を取得 / 設定する関数の方から.
案 A: TYPE-SLOT / TYPE-set-SLOT に合わせると,
* (mime-parameters-parameter PARAMETERS ATTRIBUTE) => VALUE
* (mime-parameters-set-parameter PARAMETERS ATTRIBUTE NEW-VALUE) => ?
"parameters-parameter" というのが気持ち悪いですね.
;; `parameter' という SLOT があるわけではないという話もありますし...
案 B: それでは, plist-get / plist-put みたいに,
* (mime-parameters-get PARAMETERS ATTRIBUTE) => VALUE
* (mime-parameters-put PARAMETERS ATTRIBUTE NEW-VALUE) => ?
おっと, 案 A, B では parameter の削除ができませんね.
;; NEW-VALUE に nil を与えた場合を削除とみなすという手もありますが...
案 C: では, add-text-properties / remove-text-properties のように,
* (mime-parameters-get-parameter PARAMETERS ATTRIBUTE) => VALUE
* (mime-parameters-add-parameter PARAMETERS ATTRIBUTE NEW-VALUE) => ?
* (mime-parameters-remove-parameter PARAMETERS ATTRIBUTE) => ?
ん, これでもまだ mime-parameters 型が alist(や plist) の場合には先頭の
parameter を削除できないという問題がありますね. parameter を設定する関
数の返り値は更新された mime-parameters であると定義し, mime-parameters
を設定する場合には
(setq parameters (mime-parameters-add-parameter
PARAMETERS ATTRIBUTE NEW-VALUE))
や
(mime-content-type-set-parameters
CONTENT-TYPE
(mime-parameters-remove-parameter PARAMETERS ATTRIBUTE))
のようにしなければ変更が反映されない(かもしれない)と定めるのが良いかな?
全ての parameter に対して何らかの処理をする関数の方は,
* (mime-parameters-for-each-parameter FUNC PARAMETERS) => <unspecified>
(FUNC ATTRIBUTE VALUE) => <unspecified>
でどうでしょうか?
結論として, mime-parameters API として,
* (mime-parameters-get-parameter PARAMETERS ATTRIBUTE) => VALUE
* (mime-parameters-add-parameter PARAMETERS ATTRIBUTE NEW-VALUE)
=> NEW-PARAMETERS
* (mime-parameters-remove-parameter PARAMETERS ATTRIBUTE)
=> NEW-PARAMETERS
* (mime-parameters-for-each-parameter FUNC PARAMETERS) => <unspecified>
(FUNC ATTRIBUTE VALUE) => <unspecified>
を提案します.
;; s/add/set/ や s/remove/delete/ という variant も可.
;;;; Lisp community での remove と delete の使い分けはどうなっていたっけ?
また, `mime-content-type-parameters' や `mime-content-disposition-parameters'
に対応する (mime-content-type-set-parameters CONTENT-TYPE NEW-PARAMETERS) や
(mime-content-disposition-set-parameters CONTENT-DISPOSITION NEW-PARAMETERS)
も追加する必要がありますね.
--
Shuhei KOBAYASHI
More information about the Emacs-mime-ja
mailing list