$NetBSD: patch-mime-ja.texi,v 1.1 2023/09/03 14:58:38 mef Exp $

flim-1_14-wl branch at 2023-08-08

--- /tmp/W/devel/flim/work/flim-1.14.9/mime-ja.texi	2023-09-02 12:45:03.657092847 +0900 +++ ./mime-ja.texi	2023-08-31 08:29:38.608621034 +0900 @ -1,510 +1,516 @ -\input texinfo.tex +\input texinfo-ja
-FLIM 1.14 MIME $B5!G=q̄(B + ja + utf-8 + FLIM-LB 1.14 MIME 機能説明書 + GNU Emacs Lisp + +* FLIM-LB (ja): (mime-ja).         Internet message library. + direntry
- FLIM 1.14 MIME $B5!G=q̄(B + FLIM-LB 1.14 MIME 機能説明書

- -* FLIM-ja: (mime-ja).     FLIM, a fundamental library to process Internet Messages for GNU Emacsen. - direntry

-This file documents MIME features of FLIM, a fundamental library to +This file documents MIME features of FLIM-LB, a fundamental library to process Internet Messages for GNU Emacsen.

-GNU Emacsen $BMQ$N(B Internet Message $B=hM$N$?$a$N4pAC(B library $B$G$"$k(B FLIM -$B$N(B MIME $B5!G=$K4X$7$F7$^$9!#(B +GNU Emacsen 用の Internet Message 処理のための基礎 library である FLIM-LB +の MIME 機能に関して説明します。

- FLIM $B$C$F2?!)(B + FLIM-LB って何？

-FLIM $B$O(B Internet Message $B$NI=8=$dId9f2=$K4X$9$k4pACE*$J5!G=$rDs6!$9$k(B -$B$?$a$N(B library $B$G$9!#(B +FLIM は Internet Message の表現や符号化に関する基礎的な機能を提供する +ための library です。 +FLIM-LB は FLIM のバリアントの一つで、 +最新バージョンの Emacs への対応などを特徴とします。

- FLIM $B$N(B MIME $B5!G=$N;H$$J(B + FLIM の MIME 機能の使い方

-FLIM $B$NDs6!$9$k(B MIME $B5!G=$r;H$&$?$a$K$O(B +FLIM の提供する MIME 機能を使うためには

      (require 'mime)

-$B$rI>2A$7$F$/$5$$!#(B +を評価してください。

- Message $B$H(B Entity + Message と Entity

-RFC 2045 (RFC 2045) $B$K$h$l$P!"!V(BEntity $B$H$$$&8l$O!"(Bmessage, $B$b$7$/(B -$B$O!"(Bmultipart entity $B$N(B body $BCf$N#1$D$NItJ,$N!"(BMIME $B$GDj5A$5$l$?(B header -field $B$HFbMF$r;X$9!W$H$J$C$F$$$^$9!#$3$3$G$O!"(BMIME $B$GDj5A$5$l$?(B header -field $B0J30$NA4$F$N(B header $B$H(B body $B$r;X$98l$H$7$F(B entity$B$rMQ$$$k(B -$B$3$H$K$7$^$9!#(B +RFC 2045 (RFC 2045) によれば、「Entity という語は、message, もしく +は、multipart entity の body 中の１つの部分の、MIME で定義された header +field と内容を指す」となっています。ここでは、MIME で定義された header +field 以外の全ての header と body を指す語として entityを用いる +ことにします。

-RFC 2045 $B$NDj5A$O!"(BMIME message $B$,(B entity $B$r$H$9$kLZ9=B$$G$"$k$3$H$r<((B -$B$7$F$$$^$9!#$D$^$j!"(BMIME $B$O(B message $B$rLZ9=B$$K3HD%$7$?Lu$G$9!#(B +RFC 2045 の定義は、MIME message が entity を節とする木構造であることを示 +しています。つまり、MIME は message を木構造に拡張した訳です。

-FLIM $B$O(B entity $B$N>pJs$rI=8=$9$k$?$a$K(Bmime-entity $B9=(B -$BB$BN$rMQ$$$^$9!#0J2<$G$OC1$K(B mime-entity $B$H8F$V$3$H$K$7$^$9!#(B +FLIM は entity の情報を表現するためにmime-entity 構 +造体を用います。以下では単に mime-entity と呼ぶことにします。

- Entity $B$N.(B + Entity の生成

 -- Function: mime-open-entity type location

     -Entity $B$r3+$$$F!"$=$l$rJV$7$^$9!#(B +Entity を開いて、それを返します。

     -TYPE $B$O(B representation-type $B$G$9!#(B(cf. mm-backend) +TYPE は representation-type です。(cf. mm-backend)

     -LOCATION $B$O(B entity $B$N0LCV$G$9!#;XDjJK!$O(B -representation-type $B$K0M$C$FJQ$o$j$^$9!#(B +LOCATION は entity の位置です。指定方法は +representation-type に依って変わります。

 -- Function: mime-parse-buffer &optional buffer type

     -BUFFER $B$r(B message $B$H$7$F9=J82rØ$7!"$=$N7k2L$N(B mime-entity $B$r(B -BUFFER $B$N(Bmime-message-structure $B$K3JG<$9$k!#(B +BUFFER を message として構文解析し、その結果の mime-entity を +BUFFER のmime-message-structure に格納する。

     -BUFFER $B$,>JN,$5$l$?>l9g!"8=:_$N(B buffer $B$r9=J82rØ$9$k!#(B +BUFFER が省略された場合、現在の buffer を構文解析する。

     -TYPE $B$,;XDj$5$l$?>l9g!"$=$NCM$r.$5$l$k(B mime-entity $B$NI=>]7?$H$7(B -$B$FMQ$$$k!#>JN,$5$l$?>l9g$O(B BUFFER $B$H$J$k!#(B(cf. mm-backend) +TYPE が指定された場合、その値を生成される mime-entity の表象型とし +て用いる。省略された場合は BUFFER となる。(cf. mm-backend)

- Entity $B3,AX(B + Entity 階層

-MIME message $B$O(B entity $B$rC10L$H$9$kLZ9=B$$K$J$C$F$$$^$9!#(B +MIME message は entity を単位とする木構造になっています。

-$B$3$NLZ$K$*$$$F:,$H$J$k$O(B message $BA4BN$rI=$9(B entity $B$G$9!#$3$3$G$O!"$3(B -$B$l$r(B root-entity $B$b$7$/$O(Bmessage $B$H8F$S$^$9!#(B +この木において根となる節は message 全体を表す entity です。ここでは、こ +れを root-entity もしくはmessage と呼びます。

-root-entity $B0J30$N(B entity $B$O?F$r;$A$^$9!#$^$?!"(Bentity $B$O;R6!$r;$D$+$b(B -$BCN$l$^$;$s!#$3$N?F;R4X78$r9M$($k$3$H$G(B entity $B$NAjBP4X78$r07$&$3$H$,$G$-(B -$B$^$9!#(B +root-entity 以外の entity は親を持ちます。また、entity は子供を持つかも +知れません。この親子関係を考えることで entity の相対関係を扱うことができ +ます。

-$B0lJ!"(Bentity $B$N(B message $B$K$*$1$k0LCV$r9M$($k$3$H$b$G$-$^$9!#(B +一方、entity の message における位置を考えることもできます。

-entity $B$O$3$NLZ$K$*$1$k$H$J$j$^$9$,!"$3$NLZ$K$O?<$5$HF1$8?<$5$NCf$N(B -$B=gHV$K=>$C$FHV9f$,IU$1$k$3$H$,$G$-$^$9!#B($A!"(B +entity はこの木における節となりますが、この木には深さと同じ深さの中の +順番に従って番号が付けることができます。即ち、

     -                              $B(#(!(!(!($(B
     -                              $B("(B  nil $B("(B
     -                              $B(&(!(((!(%(B
     -              $B(#(!(!(!(!(!(!(!(!(!(+(!(!(!(!(!(!(!(!(!($(B
     -            $B(#(*($(B              $B(#(*($(B              $B(#(*($(B
     -            $B("#0("(B              $B("#1("(B              $B("#2("(B
     -            $B(&(((%(B              $B(&(((%(B              $B(&(((%(B
     -              $B("(B        $B(#(!(!(!(!(+(!(!(!(!($(B        $B("(B
     -          $B(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(#(!(*(!($(B
     -          $B("(B $B#0(B.$B#0("("(B $B#1(B.$B#0("("(B $B#1(B.$B#1("("(B $B#1(B.$B#2("("(B $B#2(B.$B#0("(B
     -          $B(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(&(!(!(!(%(B
     +                              ┌───┐
     +                              │  nil │
     +                              └─┬─┘
     +              ┌─────────┼─────────┐
     +            ┌┴┐              ┌┴┐              ┌┴┐
     +            │０│              │１│              │２│
     +            └┬┘              └┬┘              └┬┘
     +              │        ┌────┼────┐        │
     +          ┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐
     +          │ ０.０││ １.０││ １.１││ １.２││ ２.０│
     +          └───┘└───┘└───┘└───┘└───┘

-$B$N$h$&$K?<$5(B n $B$N$K$OD9$5(B n $B$N?tNs$N$,?6$l$^$9!#$3$l(B -$B$r(B entity-number $B$H8F$S$^$9!#(Bentity-number $B$O(B S $B<0$H(B -$B$7$F$O(B (1 2 3) $B$N$h$&$J?t$N%j%9%H$H$7$FI=8=$5$l$^$9!#(B - -mime-entity $B$G$O!"$3$l$HF1MM$N(B node-id $B$rMQ$$$^$9!#(Bnode-id $B$O$A$g(B -$B$&$I(B entity-number $B$r5U$K$7$?%j%9%H$G!"(Bentity-number 1.2.3 $B$KBP1~$9$k(B -node-id $B$O(B (3 2 1) $B$G$9!#(B - -$BA0=R$N$h$&$K!"(BMIME message $B$O(B entity $B$rC10L$H$7$?LZ9=B$$K$J$C$F$$$k$N$G!"(B -$B$3$N:,$G$"$k(B message $BA4BN$b(B mime-entity $B$GI=8=$9$k$3$H$,$G$-!"(Bbuffer -local $BJQ?t(B mime-message-structure $B$K3JG<$9$k$3$H$K$7$^$9!#(B +のように深さ n の節には長さ n の整数列の節番号が振れます。これ +を entity-number と呼びます。entity-number は S 式と +しては (1 2 3) のような整数のリストとして表現されます。 + +mime-entity では、これと同様の node-id を用います。node-id はちょ +うど entity-number を逆にしたリストで、entity-number 1.2.3 に対応する +node-id は (3 2 1) です。 + +前述のように、MIME message は entity を単位とした木構造になっているので、 +この根である message 全体も mime-entity で表現することができ、buffer +local 変数 mime-message-structure に格納することにします。

-mime-message-structure $B$r5/EK(B entity-number $B$d(B node-id -$B$G<($5$l$k(B entity $B$r<h$j=P$9$3$H$,$G$-$^$9!#(B +mime-message-structure を起点に entity-number や node-id +で示される entity を取り出すことができます。

 -- Variable: mime-message-structure

     -$B8=:_$N(B buffer $B$K$*$1$k(B message $BA4BN$N(B mime-entity $B9=B$BN$r3JG<$9$k(Bbuffer -local $BJQ?t!#(B +現在の buffer における message 全体の mime-entity 構造体を格納するbuffer +local 変数。

 -- Function: mime-entity-children entity

     -ENTITY $B$K4^$^$l$k(B entity $B$N(B list $B$rJV$9!#(B +ENTITY に含まれる entity の list を返す。

 -- Function: mime-entity-parent entity &optional message

     -ENTITY $B$N?F$N(B entity $B$rJV$9!#(B +ENTITY の親の entity を返す。

     -MESSAGE $B$,;XDj$5$l$?>l9g!"$3$l$r:,$H8+Jo$9!#(B +MESSAGE が指定された場合、これを根と見倣す。

 -- Function: mime-root-entity-p entity

     -ENTITY $B$,:,!JB($A!"(Bmessage $BA4BN!K$G$"$k>l9g$K!"Hs(B-nil $B$rJV(B -$B$9!#(B +ENTITY が根（即ち、message 全体）である場合に、非-nil を返 +す。

 -- Function: mime-entity-node-id entity

     -ENTITY $B$N(B node-id $B$rJV$9!#(B +ENTITY の node-id を返す。

 -- Function: mime-entity-number entity

     -ENTITY $B$N(B entity-number $B$rJV$9!#(B +ENTITY の entity-number を返す。

- Entity $B$N8!:w(B + Entity の検索

 -- Function: mime-find-entity-from-number entity-number &optional message

     -MESSAGE $B$+$i!"(BENITY-NUMBER $B$N(B entity $B$rJV$7$^$9!#(B +MESSAGE から、ENITY-NUMBER の entity を返します。

     -MESSAGE $B$,;XDj$5$l$F$$$J$$>l9g$O!"(B -mime-message-structrue $B$,;H$o$l$^$9!#(B +MESSAGE が指定されていない場合は、 +mime-message-structrue が使われます。

 -- Function: mime-find-entity-from-node-id entity-node-id &optional message

     -MESSAGE $B$+$i!"(BENTITY-NODE-ID $B$N(B entity $B$rJV$7$^$9!#(B +MESSAGE から、ENTITY-NODE-ID の entity を返します。

     -MESSAGE $B$,;XDj$5$l$F$$$J$$>l9g$O!"(B -mime-message-structure $B$,;H$o$l$^$9!#(B +MESSAGE が指定されていない場合は、 +mime-message-structure が使われます。

 -- Function: mime-find-entity-from-content-id cid &optional message

     -MESSAGE $B$+$i!"(BCID $B$N(B entity $B$rJV$7$^$9!#(B +MESSAGE から、CID の entity を返します。

     -MESSAGE $B$,;XDj$5$l$F$$$J$$>l9g$O!"(B -mime-message-structure $B$,;H$o$l$^$9!#(B +MESSAGE が指定されていない場合は、 +mime-message-structure が使われます。

- Entity $B$NB0(B + Entity の属性

 -- Function: mime-entity-content-type entity

     -ENTITY $B$N(B content-type $B$rJV$9!#(B(cf. mime-content-type) +ENTITY の content-type を返す。(cf. mime-content-type)

 -- Function: mime-entity-content-disposition entity

     -ENTITY $B$N(B content-disposition $B$rJV$9!#(B +ENTITY の content-disposition を返す。 (cf. mime-content-disposition)

 -- Function: mime-entity-filename entity

     -ENTITY $B$N(B file $BL>$rJV$9!#(B +ENTITY の file 名を返す。

 -- Function: mime-entity-encoding entity &optional default-encoding

     -ENTITY $B$N(B content-transfer-encoding $B$rJV$9!#(B +ENTITY の content-transfer-encoding を返す。 (cf. Content-Transfer-Encoding)

     -$B$b$7!"(BENTITY $B$K(B Content-Transfer-Encoding $BMs$,B8:_$7$J$$>l9g$O!"(B -DEFAULT-ENCODING $B$rJV$9!#$3$l$,;XDj$5$l$J$$>l9g$O!"(B"7bit" -$B$rMQ$$$k!#(B +もし、ENTITY に Content-Transfer-Encoding 欄が存在しない場合は、 +DEFAULT-ENCODING を返す。これが指定されない場合は、"7bit" +を用いる。

 -- Function: mime-entity-cooked-p entity

     -ENTITY $B$NFbMF$,4$K%3!<%IJQ49$5$l$F$$$k>l9g$O(B nil $B$GL5$$CM(B
     -$B$rJV$9!#(B
     +ENTITY の内容が既にコード変換されている場合は nil で無い値
     +を返す。

- Entity header $B$N>pJs(B + Entity header の情報

 -- Function: mime-fetch-field field-name &optional entity

     -ENTITY $B$N(B header $BCf$N(B FIELD-NAME $BMs$N(B body $B$rJV$9!#(B +ENTITY の header 中の FIELD-NAME 欄の body を返す。

     -$B7k2L$NJ8;zNs$O(B network $BI=8=$N$^$^$G$"$k!#(B +結果の文字列は network 表現のままである。

     -ENTITY $B$,>JN,$5$l$?>l9g$O!"(Bmime-message-structure $B$NCM$rMQ(B -$B$$$k!#(B +ENTITY が省略された場合は、mime-message-structure の値を用 +いる。

     -FIELD-NAME $BMs$,B8:_$7$J$$>l9g$O(B nil $B$rJV$9!#(B +FIELD-NAME 欄が存在しない場合は nil を返す。

 -- Function: mime-read-field field-name &optional entity

     -ENTITY $B$N(B header $BCf$N(B FIELD-NAME $BMs$r9=J82rØ$7$?7k2L$rJV$9!#(B +ENTITY の header 中の FIELD-NAME 欄を構文解析した結果を返す。

     -$B7k2L$N7A<0$OMsKh$K0[$J$k!#Hs9=B$2=Ms$N>l9g$OJ8;zNs$rJV$7!"9=B$2=Ms$N>l9g(B -$B$O$=$N7A<0$K=>$C$?(B list $B$rJV$9!#(B +結果の形式は欄毎に異なる。非構造化欄の場合は文字列を返し、構造化欄の場合 +はその形式に従った list を返す。

     -$B7k2LCf$NJ8;zNs$O(B Emacs $B$NFbItI=8=$KJQ49$5$l$k!#(B +結果中の文字列は Emacs の内部表現に変換される。

     -ENTITY $B$,>JN,$5$l$?>l9g$O!"(Bmime-message-structure $B$NCM$rMQ(B -$B$$$k!#(B +ENTITY が省略された場合は、mime-message-structure の値を用 +いる。

     -FIELD-NAME $BMs$,B8:_$7$J$$>l9g$O(B nil $B$rJV$9!#(B +FIELD-NAME 欄が存在しない場合は nil を返す。

- Entity $B$NJ8;zI=8=(B + Entity の文字表現

 -- Function: mime-insert-header entity &optional invisible-fields visible-fields

     -$B8=:_0LCV$K(B ENTITY $B$NI|9f$7$?(B header $B$rA^F~$9$k!#(B +現在位置に ENTITY の復号した header を挿入する。

     -INVISIBLE-FIELDS $B$H(B VISIBLE-FIELDS $B$O5,I=8=$N(Blist $B$G!"$=$l(B -$B$>$l!"I=<($7$?$/$J$$(B field $BL>$HI=<($7$?$$MsL>$rI=8=$7$?$b$N$G$"$k!#(B +INVISIBLE-FIELDS と VISIBLE-FIELDS は正規表現のlist で、それ +ぞれ、表示したくない field 名と表示したい欄名を表現したものである。

     -INVISIBLE-FIELDS $B$NMWAG$N$I$l$+$K(B match $B$7!"$+$D!"(B -VISIBLE-FIELDS $B$NMWAG$N$I$l$K$b(B match $B$7$J$$Ms$OI=<($5$l$J$$!#(B +INVISIBLE-FIELDS の要素のどれかに match し、かつ、 +VISIBLE-FIELDS の要素のどれにも match しない欄は表示されない。

     -encoded-word (encoded-word) $B$OI|9f$5$l$k!#!X$NHs(B us-ascii $BJ8;z!Y(B -$B$O(B default-mime-charset $B$H$7$F2r<a$5$l$k!#(B +encoded-word (encoded-word) は復号される。『生の非 us-ascii 文字』 +は default-mime-charset として解釈される。

 -- Function: mime-insert-text-content entity

     -point $B$NA0$K(B ENTITY $B$r(B text entity $B$H$7$FA^F~$7$^$9!#(B +point の前に ENTITY を text entity として挿入します。

     -ENTITY $B$NFbMF$O(B MIME charset $B$H$7$FI|9f2=$5$l(B -$B$^$9!#(BENTITY $B$N(B Content-Type field $B$K(B charset paramter $B$,L5(B -$B$$$H!"(Bdefault-mime-charset $B$,=i4|CM$H$7$F;H$o$l$^$9!#(B +ENTITY の内容は MIME charset として復号化され +ます。ENTITY の Content-Type field に charset paramter が無 +いと、default-mime-charset が初期値として使われます。

 -- Variable: default-mime-charset

     -$BE,$J(B MIME charset (MIME charset) $B$,8+$D$+$i$J$+$C$?>l9g$KMQ$$$i(B -$B$l$k(BMIME charset. +適切な MIME charset (MIME charset) が見つからなかった場合に用いら +れるMIME charset.

     -$BK\Mh$O(B APEL $B$NJQ?t$G$"$k!#(B +本来は APEL の変数である。

- Entity $B$NFbMF(B + Entity の内容

 -- Function: mime-entity-content entity

     -ENTITY $B$NFbMF$N(B byte $BNs$rJV$9!#(B +ENTITY の内容の byte 列を返す。

 -- Function: mime-insert-entity-content entity

     -point $B$N0LCV$K(B ENTITY $B$NFbMF$rA^F~$7$^$9!#(B +point の位置に ENTITY の内容を挿入します。

 -- Function: mime-write-entity-content entity filename

     -ENTITY $B$NFbMF$r(B FILENAME $B$K=q$-9~$_$^$9!#(B +ENTITY の内容を FILENAME に書き込みます。

- Entity $B$N%M%C%H%o!<%/I=8=(B + Entity のネットワーク表現

 -- Function: mime-insert-entity entity

     -ENTITY $B$N(B header $B$H(B body $B$r(B point $B$N$H$3$m$KA^F~$7$^$9!#(B +ENTITY の header と body を point のところに挿入します。

 -- Function: mime-write-entity entity filename

     -ENTITY $B$NI=8=$r(B FILENAME $B$K=q$-9~$_$^$9!#(B +ENTITY の表現を FILENAME に書き込みます。

 -- Function: mime-write-entity-body entity filename

     -ENTITY $B$N(B body $B$r(B FILENAME $B$K=q$-9~$_$^$9!#(B +ENTITY の body を FILENAME に書き込みます。

- Entity $B$N(B buffer $B$K$h$kI=8=(B + Entity の buffer による表現

 -- Function: mime-entity-buffer entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$rJV$9!#(B +ENTITY が存在する buffer を返す。

 -- Function: mime-entity-point-min entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(BENTITY $B$,$a$kNN0h$N,(B -$B0LCV$rJV$9!#(B +ENTITY が存在する buffer における、ENTITY が占める領域の先頭 +位置を返す。

 -- Function: mime-entity-point-max entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(BENTITY $B$,$a$kNN0h$NKvHx(B -$B0LCV$rJV$9!#(B +ENTITY が存在する buffer における、ENTITY が占める領域の末尾 +位置を返す。

 -- Function: mime-entity-header-start entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(Bheader $B$,$a$kNN0h$N,0LCV$r(B -$BJV$9!#(B +ENTITY が存在する buffer における、header が占める領域の先頭位置を +返す。

 -- Function: mime-entity-header-end entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(Bheader $B$,$a$kNN0h$NKvHx0LCV$r(B -$BJV$9!#(B +ENTITY が存在する buffer における、header が占める領域の末尾位置を +返す。

 -- Function: mime-entity-body-start entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(Bbody $B$,$a$kNN0h$N,0LCV$rJV(B -$B$9!#(B +ENTITY が存在する buffer における、body が占める領域の先頭位置を返 +す。

 -- Function: mime-entity-body-end entity

     -ENTITY $B$,B8:_$9$k(B buffer $B$K$*$1$k!"(Bbody $B$,$a$kNN0h$NKvHx0LCV$rJV(B -$B$9!#(B +ENTITY が存在する buffer における、body が占める領域の末尾位置を返 +す。

- Entity $B$NI=8=$H<B8=(B + Entity の表現と実現 - entity $B=hM(B method + entity 処理 method

-Entity $B$OCj>]2=$5$l$?%G!<%?I=8=$G!"<B:]$N%G!<%?I=8=$H$7$F$OMQES$K1~$8$F(B -$B$5$^$6$^$J$b$N$,MxMQ$G$-$k$h$&$K7W$5$l$F$$$^$9!#(B +Entity は抽象化されたデータ表現で、実際のデータ表現としては用途に応じて +さまざまなものが利用できるように設計されています。

-$B$3$3$G!"(Bentity $B$,$I$&$$$&<oN`$NI=8=$r9T$C$F$$$k$+$r<($9$N$,(B -representation-type $B$G!"(Bentity $B$r.$9$k;~$K$O$3$l$r;XDj$7$^$9!#(B -(cf. Entity Creation) - -$BA0$^$G$K=R$Y$FMh$?(B entity $B$KBP$9$k=hM$O!"(Bentity $B$KBP$7$F$=$N=hM$r0M(B -$BMj$9$k$3$H$K$h$C$F<B8=$5$l$F$$$^$9!#(BEntity $B$O<+J,$N(B representation-type -$B$rCN$C$F$*$j!"$=$N(B representation-type $B$K1~$8$F<B:]$N=hM$r9T$&4X?t$r8F(B -$B$S=P$7$^$9!#$3$N$h$&$J4X?t$r(B entity $B=hM(Bmethod $B$H8F$S$^$9!#$^$?!"(B -representation-type $BKh$K$3$N$h$&$J4X?t$r$^$H$a$?$b$N$r(B -mm-backend $B$H8F$S$^$9!#(B - -mm-backend $B$O(B representation-type $B$NL>A0$N,$K(B mm $B$H$$$&(B -$B\F,<-$rIU$1$?4X?tL>$+$i$J$k(B module $B$G!"$=$N(B module $BL>$OF1MM$K(B -representation-type $B$NL>A0$N,$K(B mm $B$rIU$1$?$b$N$K$J$C$F(B -$B$$$^$9!#$3$N(B module $B$O(B representation-type $B$N(B entity $B$,:G=i$K.$5$l$k(B -$B;~$K<+F0E*$K(B require $B$5$l$^$9!#(B +ここで、entity がどういう種類の表現を行っているかを示すのが +representation-type で、entity を生成する時にはこれを指定します。 +(cf. Entity creation) + +前節までに述べて来た entity に対する処理は、entity に対してその処理を依 +頼することによって実現されています。Entity は自分の representation-type +を知っており、その representation-type に応じて実際の処理を行う関数を呼 +び出します。このような関数を entity 処理method と呼びます。また、 +representation-type 毎にこのような関数をまとめたものを +mm-backend と呼びます。 + +mm-backend は representation-type の名前の先頭に mm という +接頭辞を付けた関数名からなる module で、その module 名は同様に +representation-type の名前の先頭に mm を付けたものになって +います。この module は representation-type の entity が最初に生成される +時に自動的に require されます。

- Entity $B$X$NJX$j(B + Entity への便り

 -- Function: mime-entity-send entity message &rest args

     -ENTITY $B$K(B MESSAGE $B$rAw$k!#(B +ENTITY に MESSAGE を送る。

     -ARGS $B$O(B MESSAGE $B$N0z?t$G$"$k!#(B +ARGS は MESSAGE の引数である。

- mm-backend $B$N:n$jJ(B + mm-backend の作り方

 -- Macro: mm-define-backend type &optional parents

     -TYPE $B$r(B mm-backend $B$H$7$FDj5A$7$^$9!#(B +TYPE を mm-backend として定義します。

     -PARENTS $B$,;XDj$5$l$F$$$k>l9g$O!"(BTYPE $B$O(B prents -$B$r7Q>5$7$^$9!#$=$l$>$l$N(B parent $B$O(B representation-type $B$G$"$kI,MW$,$"(B -$B$j$^$9!#(B +PARENTS が指定されている場合は、TYPE は prents +を継承します。それぞれの parent は representation-type である必要があ +ります。

     -$BNc(B: +例:

           (mm-define-backend chao (generic))
          @ -514,15 +520,15 @

           -- Macro: mm-define-method name args &rest body

               -NAME $B$r(B (nth 1 (car ARGS)) backend $B$N(B method $B4X(B
               -$B?t$H$7$FDj5A$7$^$9!#(B
               +NAME を (nth 1 (car ARGS)) backend の method 関
               +数として定義します。

               -ARGS $B$O(B lambda $B$N0z?t%j%9%H$N$h$&$J$b$N$G$9$,!"(B(car
               -ARGS) $B$O;XDj$5$l$?(B parameter $B$G$"$kI,MW$,$"$j$^$9!#(B(car
               -(car ARGS)) $B$OJQ?t$NL>A0$G!"(B(nth 1 (car ARGS))
               -$B$O(B backend $B$NL>A0(B (representation-type) $B$G$9!#(B
               +ARGS は lambda の引数リストのようなものですが、(car
               +ARGS) は指定された parameter である必要があります。(car
               +(car ARGS)) は変数の名前で、(nth 1 (car ARGS))
               +は backend の名前 (representation-type) です。

               -$BNc(B:
               +例:

                     (mm-define-method entity-cooked-p ((entity chao)) nil)
                    @ -532,49 +538,49 @

                    - Content-Type $BMs$N>pJs(B
                    + Content-Type 欄の情報
                    - Content-Type $BMs(B
                    + Content-Type 欄

                    -Content-Type $BMs(B $B$O(B media-type (media-type) $B$d(B MIME
                    -charset $B$H$$$C$?(B entity (entity) $B$NFbMF$N<oN`$dI=8=7A<0$J$I$r5-=R(B
                    -$B$9$k$?$a$N$b$N$G!"(BRFC 2045 (RFC 2045) $B$GDj5A$5$l$F$$$^$9!#(B
                    +Content-Type 欄 は media-type (media-type) や MIME
                    +charset といった entity (Entity) の内容の種類や表現形式などを記述
                    +するためのもので、RFC 2045 (RFC 2045) で定義されています。

                     [Memo]

                         -$BNr;KE*$K$O(B RFC 1049 $B$G(B Content-Type $BMs$,Ds0F$5$l$F$$$k!#C"$7!"(BMIME $B$N(B
                         -media-type $B$N$h$&$J(B type $B$H(B subtype $B$N6hJL$O$J$/!"(BMIME charset $B$N$h$&$J(B
                         -$BJ8;zId9f$N<oN`$rI=8=$9$k$3$H$b$G$-$J$$!#(B
                         +歴史的には RFC 1049 で Content-Type 欄が提案されている。但し、MIME の
                         +media-type のような type と subtype の区別はなく、MIME charset のような
                         +文字符号の種類を表現することもできない。

                    -FLIM $B$O(B Content-Type $BMs$r9=J82rØ$9$k4X?t$H(B Content-Type $BMs$N2r$r(B
                    -$B3JG<$9$k9=B$BN(B mime-content-type $B$rDs6!$7$^$9!#(B
                    +FLIM は Content-Type 欄を構文解析する関数と Content-Type 欄の解析結果を
                    +格納する構造体 mime-content-type を提供します。

                    - Content-Type $BMs$N7A<0(B
                    + Content-Type 欄の形式

                    -Content-Type $BMs$N7A<0$O0J2<$N$h$&$KDj5A$5$l$F$$$^$9!'(B
                    +Content-Type 欄の形式は以下のように定義されています：

                          ``Content-Type'' ``:'' type ``/''
                          subtype *( ``;'' parameter )

                    -$BNc$($P!"(B
                    +例えば、

                              @ -583,7 +589,7 @

                    -$B$d(B
                    +や

                              @ -592,17 +598,17 @

                    -$B$J$I$N$h$&$KMQ$$$i$l$^$9!#(B
                    +などのように用いられます。

                    -$B$3$3$G!"(B`type' $B$H(B `subtype' $B$O(B entity $B$N7A<0$r<($9$b$N$G!"N><T$rAm>N$7(B
                    -$B$F!"(B`media-type' $B$H8F$V$3$H$K$7$^$9!#>e5-$NNc$K$*$1$k(B `image/jpeg' $B$d(B
                    -`text/plain' $B$O(B media-type $B$N#1$D$G$9!#(B
                    +ここで、`type' と `subtype' は entity の形式を示すもので、両者を総称し
                    +て、`media-type' と呼ぶことにします。上記の例における `image/jpeg' や
                    +`text/plain' は media-type の１つです。

                     [Memo]

                         -Content-Type $BMs$N$J$$(B entity $B$O(B
                         +Content-Type 欄のない entity は

                                   @ -611,32 +617,32 @

                         -$B$H$7$F2r<a$5$l$k!#(B(cf. us-ascii)
                         +として解釈される。(cf. us-ascii)

                    - mime-content-type $B9=B$BN(B
                    + mime-content-type 構造体

                     Structure mime-content-type

                    -Content-Type $BMs$N>pJs$r3JG<$9$k$?$a$N9=B$BN!#(B
                    +Content-Type 欄の情報を格納するための構造体。

                    -$B$3$N9=B$BN$r;2>H$9$k$K$O(B mime-content-type-$BMWAGL>(B $B$H$$$&L>A0$N;2(B
                    -$B>H4X?t$rMQ$$$k!#(B
                    +この構造体を参照するには mime-content-type-要素名 という名前の参
                    +照関数を用いる。

                    -$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'(B
                    +この構造体の要素は以下の通りである：

                    primary-type
                         -media-type $B$N<g7?(B (symbol).
                         +media-type の主型 (symbol).

                    subtype
                         -media-type $B$NI7?(B (symbol).
                         +media-type の副型 (symbol).

                    parameters
                         -Content-Type $BMs$N(B parameter ($BO"A[(B list).
                         +Content-Type 欄の parameter (連想 list).

                    @ -645,54 +651,54 @
                     -- Function: make-mime-content-type type subtype
                          	   &optional  parameters

                         -content-type $B$N.;R!#(B
                         +content-type の生成子。

                     -- Function: mime-content-type-parameter content-type parameter

                         -CONTENT-TYPE $B$N(B PARAMETER $B$NCM$rJV$9!#(B
                         +CONTENT-TYPE の PARAMETER の値を返す。

                    - Content-Type $BMs$N2r(B
                    + Content-Type 欄の解析器

                     -- Function: mime-parse-Content-Type string

                         -STRING $B$r(B content-type $B$H$7$F2rØ$7$?7k2L$rJV$9!#(B
                         +STRING を content-type として解析した結果を返す。

                     -- Function: mime-read-Content-Type

                         -$B8=:_$N(B buffer $B$N(B Content-Type $BMs$rFI$_<h$j!"2rØ$7$?7k2L$rJV$9!#(B
                         +現在の buffer の Content-Type 欄を読み取り、解析した結果を返す。

                         -Content-Type $BMs$,B8:_$7$J$$>l9g$O(B nil $B$rJV$9!#(B
                         +Content-Type 欄が存在しない場合は nil を返す。

                    - Content-Type $B$K4X$9$kM-MQ$J4X?t(B
                    + Content-Type に関する有用な関数

                     -- Function: mime-type/subtype-string type &optional subtype

                         -TYPE $B$H(B SUBTYPE $B$+$i(B type/subtype $B7A<0$NJ8;zNs$rJV$9!#(B
                         +TYPE と SUBTYPE から type/subtype 形式の文字列を返す。

                    - Content-Disposition $BMs$N>pJs(B
                    + Content-Disposition 欄の情報
                    - Content-Disposition $BMs(B
                    + Content-Disposition 欄

                    -Content-Disposition $BMs(B $B$O(B entity $B$NI=<($d(B file $BL>$J$I(B
                    -$B$NB0$K$J$I$K4X$9$k>pJs$r5-=R$9$k$?$a$N$b$N$G$9!#(B
                    +Content-Disposition 欄 は entity の表示や file 名など
                    +の属性になどに関する情報を記述するためのものです。

                    @ -703,34 +709,34 @
                     August 1997, Standards Track.

                    -FLIM $B$O(B Content-Disposition $BMs$r9=J82rØ$9$k4X?t$H(B Content-Disposition
                    -$BMs$N2r$r3JG<$9$k9=B$BN(B
                    -mime-content-disposition $B$rDs6!$7$^$9!#(B
                    +FLIM は Content-Disposition 欄を構文解析する関数と Content-Disposition
                    +欄の解析結果を格納する構造体
                    +mime-content-disposition を提供します。

                    - mime-content-disposition $B9=B$BN(B
                    + mime-content-disposition 構造体

                     Structure mime-content-disposition

                    -Content-Disposition $BMs$N2r$r<$a$k$?$a$N9=B$BN!#(B
                    +Content-Disposition 欄の解析結果を収めるための構造体。

                    -$B$3$N9=B$BN$r;2>H$9$k$K$O(B mime-content-disposition-$BMWAGL>(B $B$H$$$&L>(B
                    -$BA0$N;2>H4X?t$rMQ$$$k!#(B
                    +この構造体を参照するには mime-content-disposition-要素名 という名
                    +前の参照関数を用いる。

                    -$B$3$N9=B$BN$NMWAG$O0J2<$NDL$j$G$"$k!'(B
                    +この構造体の要素は以下の通りである：

                    disposition-type
                          disposition-type (symbol).

                    parameters
                         -Content-Disposition $BMs$N(B parameter ($BO"A[(B list).
                         +Content-Disposition 欄の parameter (連想 list).

                    @ -738,117 +744,117 @

                     -- Function: mime-content-disposition-parameter content-disposition parameter

                         -CONTENT-DISPOSITION $B$N(B PARAMETER $B$NCM$rJV$9!#(B
                         +CONTENT-DISPOSITION の PARAMETER の値を返す。

                     -- Function: mime-content-disposition-filename content-disposition

                         -CONTENT-DISPOSITION $B$N(B filename $B$NCM$rJV$9!#(B
                         +CONTENT-DISPOSITION の filename の値を返す。

                    - Content-Disposition $BMs$N2r(B
                    + Content-Disposition 欄の解析器

                     -- Function: mime-parse-Content-Disposition string

                         -STRING $B$r(B content-disposition $B$H$7$F2rØ$7$?7k2L$rJV$9!#(B
                         +STRING を content-disposition として解析した結果を返す。

                     -- Function: mime-read-Content-Disposition

                         -$B8=:_$N(B buffer $B$N(B Content-Disposition $BMs$rFI$_<h$j!"2rØ$7$?7k2L$rJV$9!#(B
                         +現在の buffer の Content-Disposition 欄を読み取り、解析した結果を返す。

                         -Content-Disposition $BMs$,B8:_$7$J$$>l9g$O(B nil $B$rJV$9!#(B
                         +Content-Disposition 欄が存在しない場合は nil を返す。

                    - $BId9f2=K!(B
                    - Content-Transfer-Encoding $BMs(B
                    + 符号化法
                    + Content-Transfer-Encoding 欄

                    -Content-Transfer-Encoding $BMs(B $B$O(B entity $B$NId9f2=K!$r5-=R$9$k$?$a(B
                    -$B$N$b$N$G$9!#(B
                    +Content-Transfer-Encoding 欄 は entity の符号化法を記述するため
                    +のものです。

                    -FLIM $B$G$O(B Content-Transfer-Encoding $BMs$r9=J82rØ$9$k4X?t$rDs6!$7$^$9!#$3(B
                    -$B$l$i$N4X?t$O(B Content-Transfer-Encoding $BMs$N>pJs$OJ8;zNs$GI=8=$7$^$9!#(B
                    +FLIM では Content-Transfer-Encoding 欄を構文解析する関数を提供します。こ
                    +れらの関数は Content-Transfer-Encoding 欄の情報は文字列で表現します。

                    -$B$^$?!"(BContent-Transfer-Encoding $B$K4p$E$$$FId9f2=!&I|9f2=$r9T$&4X?t$bDs(B
                    -$B6!$5$l$^$9!#(B
                    +また、Content-Transfer-Encoding に基づいて符号化・復号化を行う関数も提
                    +供されます。

                    - Content-Transfer-Encoding $BMs$N2r(B
                    + Content-Transfer-Encoding 欄の解析器

                     -- Function: mime-parse-Content-Transfer-Encoding string

                         -STRING $B$r(B content-transfer-encoding $B$H$7$F2rØ$7$?7k2L$rJV$9!#(B
                         +STRING を content-transfer-encoding として解析した結果を返す。

                     -- Function: mime-read-Content-Transfer-Encoding &optional default-encoding

                         -$B8=:_$N(B buffer $B$N(B Content-Transfer-Encoding $BMs$rFI$_<h$j!"2rØ$7$?7k2L$r(B
                         -$BJV$9!#(B
                         +現在の buffer の Content-Transfer-Encoding 欄を読み取り、解析した結果を
                         +返す。

                         -Content-Transfer-Encoding $BMs$,B8:_$7$J$$>l9g$O(BDEFAULT-ENCODING $B$r(B
                         -$BJV$9!#(B
                         +Content-Transfer-Encoding 欄が存在しない場合はDEFAULT-ENCODING を
                         +返す。

                    - $BId9f2=!&I|9f2=(B
                    + 符号化・復号化

                     -- Function: mime-encode-region start end encoding

                         -$B8=:_$N(B buffer $B$N(B START $B$+$i(B END $B$^$G$N(B region $B$r(B
                         -ENCODING $B$r;H$C$FId9f2=$7$^$9!#(B
                         +現在の buffer の START から END までの region を
                         +ENCODING を使って符号化します。

                     -- Function: mime-decode-region start end encoding

                         -$B8=:_$N(B buffer $B$N(B START $B$+$i(B END $B$^$G$N(B region $B$r(B
                         -ENCODING $B$r;H$C$FI|9f2=$7$^$9!#(B
                         +現在の buffer の START から END までの region を
                         +ENCODING を使って復号化します。

                     -- Function: mime-decode-string string encoding

                         -STRING $B$r(B ENCODING $B$H$7$FI|9f$7$?7k2L$rJV$9!#(B
                         +STRING を ENCODING として復号した結果を返す。

                     -- Function: mime-insert-encoded-file filename encoding

                         -ENCODING format $B$GId9f2=$5$l$?(B file FILENAME $B$r(B
                         -$BA^F~$9$k!#(B
                         +ENCODING format で符号化された file FILENAME を
                         +挿入する。

                     -- Function: mime-write-decoded-region start end filename encoding

                         -ENCODING $B$GId9f2=$5$l$?8=:_$N(B region $B$rI|9f2=$7$F(B
                         -FILENAME$B$K=q$-9~$_$^$9!#(B
                         +ENCODING で符号化された現在の region を復号化して
                         +FILENAMEに書き込みます。

                         -<var>start<var> $B$H(B END $B$O(B buffer $B$N0LCV$G$9!#(B
                         +<var>start<var> と END は buffer の位置です。

                    @ -858,19 +864,19 @

                     -- Function: mime-encoding-list &optional SERVICE

                         -Content-Transfer-Encoding $B$N(B list $B$rJV$7$^$9!#(B
                         +Content-Transfer-Encoding の list を返します。

                         -SERVICE $B$,;XDj$5$l$F$$$k$H!"$=$l$KBP$9$k(B
                         -Content-Transfer-Encoding $B$rJV$7$^$9!#(B
                         +SERVICE が指定されていると、それに対する
                         +Content-Transfer-Encoding を返します。

                     -- Function: mime-encoding-alist &optional SERVICE

                         -$BJd40$N$?$a$N(B Content-Transfer-Encoding $B$NI=$rJV$7$^$9!#(B
                         +補完のための Content-Transfer-Encoding の表を返します。

                         -SERVICE $B$,;XDj$5$l$F$$$k>l9g$O$=$l$KBP$9$k(B
                         -Content-Transfer-Encoding $B$N(B list $B$rJV$7$^$9!#(B
                         +SERVICE が指定されている場合はそれに対する
                         +Content-Transfer-Encoding の list を返します。

                    @ -880,15 +886,15 @

                     -- Macro: mel-define-method name args &rest body

                         -NAME $B$r(B (nth 1 (car (last ARGS))) backend $B$N(B
                         -method $B4X?t$H$7$FDj5A$7$^$9!#(B
                         +NAME を (nth 1 (car (last ARGS))) backend の
                         +method 関数として定義します。

                         -ARGS $B$O(B lambda $B$N0z?t(B list $B$H;w$F$$$^$9$,!"(B(car (last
                         -ARGS)) $B$O;XDj$5$l$?(B parameter $B$G$"$kI,MW$,$"$j$^$9!#(B(car
                         -(car (last ARGS))) $B$OJQ?t$NL>A0$G!"(B(nth 1 (car (last
                         -ARGS))) $B$O(B backend $B$NL>A0(B (encoding) $B$G$9!#(B
                         +ARGS は lambda の引数 list と似ていますが、(car (last
                         +ARGS)) は指定された parameter である必要があります。(car
                         +(car (last ARGS))) は変数の名前で、(nth 1 (car (last
                         +ARGS))) は backend の名前 (encoding) です。

                         -$BNc(B:
                         +例:

                               (mel-define-method mime-write-decoded-region (start end filename
                              @ -909,16 +915,16 @

                               -- Macro: mel-define-method-function spec function

                                   -SPEC $B$N4X?tDj5A$r(B FUNCTION $B$KDj$7$^$9!#(B
                                   +SPEC の関数定義を FUNCTION に設定します。

                                   -SPEC $B$N:G=i$NMWAG$O(B service $B$G$9!#(B
                                   +SPEC の最初の要素は service です。

                                   -ARGS $B$N;D$j$O(B lambda $B$N0z?t(B list $B;w$F$$$^$9$,!"(B(car (last
                                   -ARGS)) $B$O;XDj$5$l$?(B parameter $B$G$"$kI,MW$,$"$j$^$9!#(B(car
                                   -(car (last ARGS))) $B$OJQ?t$NL>A0$G!"(B(nth 1 (car (last
                                   -ARGS))) $B$O(B backend $B$NL>A0(B (encoding) $B$G$9!#(B
                                   +ARGS の残りは lambda の引数 list 似ていますが、(car (last
                                   +ARGS)) は指定された parameter である必要があります。(car
                                   +(car (last ARGS))) は変数の名前で、(nth 1 (car (last
                                   +ARGS))) は backend の名前 (encoding) です。

                                   -$BNc(B:
                                   +例:

                                         (mel-define-method-function (mime-encode-string string (nil "base64"))
                                        @ -929,17 +935,17 @

                                        - $BId9f2=(B/$BI|9f2=(B service $B$rDI2C$9$kJK!(B
                                        + 符号化/復号化 service を追加する方法

                                         -- Macro: mel-define-service name &optional args doc-string

                                        -NAME $B$r(B Content-Transfer-Encoding $B$N(B service $B$H$7$FDj5A$7$^(B
                                        -$B$9!#(B
                                        +NAME を Content-Transfer-Encoding の service として定義しま
                                        +す。

                                        -ARGS $B$,;XDj$5$l$F$$$k$H!"(BNAME $B$O(B service $B$N(B
                                        -generic function $B$H$7$FDj5A$5$l$^$9!#(B
                                        +ARGS が指定されていると、NAME は service の
                                        +generic function として定義されます。

                                        -$BNc(B:
                                        +例:

                                         (mel-define-service encoded-text-encode-string (string encoding)
                                        @ -951,13 +957,13 @

                                        - Header $B$N(B network $BI=8=(B
                                        + Header の network 表現

                                        -encoded-word $B$O(B header $B$GHs(B ASCII (ASCII) $BJ8;z$rI=8=$9$k$?$a$N7A<0(B
                                        -$B$G!"(BRFC 2047 $B$GDj5A$5$l$F$$$^$9!#(B
                                        +encoded-word は header で非 ASCII (ASCII) 文字を表現するための形式
                                        +で、RFC 2047 で定義されています。

                                        @ -968,86 +974,86 @
                                         Track (obsolete RFC 1521,1522,1590).

                                        -$B$^$?!"9T57$N0-$$$3$H$H8($^$9$,!"(Bencoded-word $B$rMQ$$$:$KHs(B ASCII
                                        -(ASCII) $BJ8;z$r(B header $B$KF~$l$?5-;v$bB8:_$7$^$9!#(B
                                        +また、行儀の悪いことだと言えますが、encoded-word を用いずに非 ASCII
                                        +(ASCII) 文字を header に入れた記事も存在します。

                                        -FLIM $B$O$3$l$i$rId9f2=!&I|9f2=$9$k5!G=$rDs6!$7$^$9!#(B
                                        +FLIM はこれらを符号化・復号化する機能を提供します。

                                        - Header $B$NId9f2=!&I|9f2=(B
                                        + Header の符号化・復号化

                                         -- Function: eword-decode-header &optional code-conversion separator

                                        -Header $BCf$N(B encoded-word $B$rI|9f$9$k!#(B
                                        +Header 中の encoded-word を復号する。

                                        -$B$b$7(B CODE-CONVERSION $B$,(B nil $B$J$i!"(Bencoded-word $B$1$,I|9f$5(B
                                        -$B$l$k!#$b$7!"(BCODE-CONVERSION $B$,(B MIME charset (MIME charset)
                                        -$B$J$i!"Hs(B ASCII bit patterns $B$O$=$N(B MIME charset $B$H$7$FI|9f$5$l$k!#$3$l0J(B
                                        -$B30$N>l9g!"Hs(B ASCII bit patterns $B$O(Bdefault-mime-charset. $B$H$7$FI|(B
                                        -$B9f$5$l$k!#(B(cf. entity formatting)
                                        +もし CODE-CONVERSION が nil なら、encoded-word だけが復号さ
                                        +れる。もし、CODE-CONVERSION が MIME charset (MIME charset)
                                        +なら、非 ASCII bit patterns はその MIME charset として復号される。これ以
                                        +外の場合、非 ASCII bit patterns はdefault-mime-charset. として復
                                        +号される。(cf. entity formatting)

                                        -$B$b$7(B SEPARATOR $B$,(B nil $B$G$J$1$l$P!"$=$NCM$,(Bheader separator
                                        -$B$H$7$FMQ$$$i$l$k!#(B
                                        +もし SEPARATOR が nil でなければ、その値がheader separator
                                        +として用いられる。

                                         -- Function: eword-encode-header &optional code-conversion

                                        -Header $B$r(B network $BI=8=$KId9f2=$9$k!#(B
                                        +Header を network 表現に符号化する。

                                        -$B3F(B field $B$O(B mime-field-encoding-method-alist $B$G;XDj$5$l$?J<0$G(B
                                        -$BId9f2=$5$l$k!#(B
                                        +各 field は mime-field-encoding-method-alist で指定された方式で
                                        +符号化される。

                                         -- Variable: mime-field-encoding-method-alist

                                        -Field $B$rId9f2=$9$kJK!$r;XDj$9$kO"A[(B list$B!#3F(B element $B$O(B (FIELD
                                        -. METHOD) $B$NMM$K$J$C$F$$$k!#(B
                                        +Field を符号化する方法を指定する連想 list。各 element は (FIELD
                                        +. METHOD) の様になっている。

                                        -METHOD $B$,(B mime $B$G$"$l$P!"(BFIELD $B$O(B MIME format $B$KId9f2=$5(B
                                        -$B$l$k(B (encoded-word)$B!#(B
                                        +METHOD が mime であれば、FIELD は MIME format に符号化さ
                                        +れる (encoded-word)。

                                        -METHOD $B$,(B nil $B$G$"$l$P!"(BFIELD $B$OId9f2=$5$l$J$$!#(B
                                        +METHOD が nil であれば、FIELD は符号化されない。

                                        -METHOD $B$,(B MIME charset $B$G$"$l$P!"(BFIELD $B$O%M%C%H%o!<%/%3!<%I$KJQ49$7$J(B
                                        -$B$1$l$P$J$i$J$$$H$-$K(B charset $B$KId9f2=$5$l$k!#(B
                                        +METHOD が MIME charset であれば、FIELD はネットワークコードに変換しな
                                        +ければならないときに charset に符号化される。

                                        -$B$=$&$G$J$1$l$P!"(BFIELD $B$O%M%C%H%o!<%/%3!<%I$KJQ49$7$J$1$l$P$J$i$J$$$H$-(B
                                        -$B$K(B $BJQ?t(B default-mime-charset $B$GId9f2=$5$l$k(B
                                        +そうでなければ、FIELD はネットワークコードに変換しなければならないとき
                                        +に 変数 default-mime-charset で符号化される

                                        - $B0lHLDj(B
                                        + 一般設定

                                         group mime

                                        -MIME $B4XO"5!G=$K4X$9$k(B group.
                                        +MIME 関連機能に関する group.

                                        -mail $B$H(B news $B$KB0$9$k!#(B
                                        +mail と news に属する。

                                        - $BIUO?(B
                                        + 付録

                                        - $BMQ8l(B
                                        + 用語