[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
RFC 2045 (RFC 2045) によれば、「Entity という語は、message, もしく は、multipart entity の body 中の1つの部分の、MIME で定義された header field と内容を指す」となっています。ここでは、MIME で定義された header field 以外の全ての header と body を指す語として entityを用いる ことにします。
RFC 2045 の定義は、MIME message が entity を節とする木構造であることを示 しています。つまり、MIME は message を木構造に拡張した訳です。
FLIM は entity の情報を表現するためにmime-entity 構 造体を用います。以下では単に mime-entity と呼ぶことにします。
3.1 Entity の生成 | ||
3.2 Entity 階層 | ||
3.3 Entity の検索 | ||
3.4 Entity の属性 | ||
3.5 Entity header の情報 | ||
3.6 Entity の文字表現 | ||
3.7 Entity の内容 | ||
3.8 Entity のネットワーク表現 | ||
3.9 Entity の buffer による表現 | ||
3.10 Entity の表現と実現 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Entity を開いて、それを返します。
type は representation-type です。(cf. Entity の表現と実現)
location は entity の位置です。指定方法は representation-type に依って変わります。
buffer を message として構文解析し、その結果の mime-entity を
buffer のmime-message-structure
に格納する。
buffer が省略された場合、現在の buffer を構文解析する。
type が指定された場合、その値を生成される mime-entity の表象型とし て用いる。省略された場合は buffer となる。(cf. Entity の表現と実現)
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
MIME message は entity を単位とする木構造になっています。
この木において根となる節は message 全体を表す entity です。ここでは、こ れを root-entity もしくはmessage と呼びます。
root-entity 以外の entity は親を持ちます。また、entity は子供を持つかも 知れません。この親子関係を考えることで entity の相対関係を扱うことができ ます。
一方、entity の message における位置を考えることもできます。
entity はこの木における節となりますが、この木には深さと同じ深さの中の 順番に従って番号が付けることができます。即ち、
┌───┐ │ nil │ └─┬─┘ ┌─────────┼─────────┐ ┌┴┐ ┌┴┐ ┌┴┐ │0│ │1│ │2│ └┬┘ └┬┘ └┬┘ │ ┌────┼────┐ │ ┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐┌─┴─┐ │ 0.0││ 1.0││ 1.1││ 1.2││ 2.0│ └───┘└───┘└───┘└───┘└───┘ |
のように深さ 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
を起点に entity-number や node-id
で示される entity を取り出すことができます。
現在の buffer における message 全体の mime-entity 構造体を格納するbuffer local 変数。
entity に含まれる entity の list を返す。
entity の親の entity を返す。
message が指定された場合、これを根と見倣す。
entity が根(即ち、message 全体)である場合に、非-nil
を返
す。
entity の node-id を返す。
entity の entity-number を返す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
message から、enity-number の entity を返します。
message が指定されていない場合は、
mime-message-structrue
が使われます。
message から、entity-node-id の entity を返します。
message が指定されていない場合は、
mime-message-structure
が使われます。
message から、cid の entity を返します。
message が指定されていない場合は、
mime-message-structure
が使われます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity の content-type を返す。(cf. mime-content-type 構造体)
entity の content-disposition を返す。 (cf. mime-content-disposition 構造体)
entity の file 名を返す。
entity の content-transfer-encoding を返す。 (cf. 符号化法)
もし、entity に Content-Transfer-Encoding 欄が存在しない場合は、
default-encoding を返す。これが指定されない場合は、"7bit"
を用いる。
entity の内容が既にコード変換されている場合は nil で無い値 を返す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity の header 中の field-name 欄の body を返す。
結果の文字列は network 表現のままである。
entity が省略された場合は、mime-message-structure
の値を用
いる。
field-name 欄が存在しない場合は nil
を返す。
entity の header 中の field-name 欄を構文解析した結果を返す。
結果の形式は欄毎に異なる。非構造化欄の場合は文字列を返し、構造化欄の場合 はその形式に従った list を返す。
結果中の文字列は Emacs の内部表現に変換される。
entity が省略された場合は、mime-message-structure
の値を用
いる。
field-name 欄が存在しない場合は nil を返す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
現在位置に entity の復号した header を挿入する。
invisible-fields と visible-fields は正規表現のlist で、それ ぞれ、表示したくない field 名と表示したい欄名を表現したものである。
invisible-fields の要素のどれかに match し、かつ、 visible-fields の要素のどれにも match しない欄は表示されない。
encoded-word (Header の network 表現) は復号される。『生の非 us-ascii 文字』
は default-mime-charset
として解釈される。
point の前に entity を text entity として挿入します。
entity の内容は MIME charset として復号化され
ます。entity の Content-Type field に charset paramter が無
いと、default-mime-charset
が初期値として使われます。
適切な MIME charset (MIME charset) が見つからなかった場合に用いら れるMIME charset.
本来は APEL の変数である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity の内容の byte 列を返す。
point の位置に entity の内容を挿入します。
entity の内容を filename に書き込みます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity の header と body を point のところに挿入します。
entity の表現を filename に書き込みます。
entity の body を filename に書き込みます。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity が存在する buffer を返す。
entity が存在する buffer における、entity が占める領域の先頭 位置を返す。
entity が存在する buffer における、entity が占める領域の末尾 位置を返す。
entity が存在する buffer における、header が占める領域の先頭位置を 返す。
entity が存在する buffer における、header が占める領域の末尾位置を 返す。
entity が存在する buffer における、body が占める領域の先頭位置を返 す。
entity が存在する buffer における、body が占める領域の末尾位置を返 す。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Entity は抽象化されたデータ表現で、実際のデータ表現としては用途に応じて さまざまなものが利用できるように設計されています。
ここで、entity がどういう種類の表現を行っているかを示すのが representation-type で、entity を生成する時にはこれを指定します。 (cf. @ref{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 されます。
3.10.1 Entity への便り | ||
3.10.2 mm-backend の作り方 |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
entity に message を送る。
args は message の引数である。
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
type を mm-backend として定義します。
PARENTS が指定されている場合は、type は prents を継承します。それぞれの parent は representation-type である必要があ ります。
例:
(mm-define-backend chao (generic)) |
name を (nth 1 (car args)) backend の method 関 数として定義します。
args は lambda の引数リストのようなものですが、(car args) は指定された parameter である必要があります。(car (car args)) は変数の名前で、(nth 1 (car args)) は backend の名前 (representation-type) です。
例:
(mm-define-method entity-cooked-p ((entity chao)) nil) |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Yasutaka SHINDOH on May 11, 2011 using texi2html 1.82.