"mailcap" — mailcap ファイルの操作
**********************************

**ソースコード:** Lib/mailcap.py

======================================================================

mailcap ファイルは、メールリーダや Web ブラウザのような MIME 対応のア
プリケーションが、異なる MIME タイプのファイルにどのように反応するかを
設定するために使われます (「mailcap」 の名前は 「mail capability」 か
ら取られました)。例えば、ある mailcap ファイルに "video/mpeg; xmpeg
%s" のような行が入っていたとします。ユーザが email メッセージや Web ド
キュメント上でその MIME タイプ *video/mpeg* に遭遇すると、 "%s" はファ
イル名 (通常テンポラリファイルに属するものになります) に置き換えられ、
ファイルを閲覧するために**xmpeg** プログラムが自動的に起動されます。

mailcap の形式は **RFC 1524**, 「A User Agent Configuration Mechanism
For Multimedia Mail Format Information」 で文書化されていますが、この
文書はインターネット標準ではありません。しかしながら、 mailcap ファイ
ルはほとんどの Unix システムでサポートされています。

mailcap.findmatch(caps, MIMEtype[, key[, filename[, plist]]])

   2 要素のタプルを返します; 最初の要素は文字列で、実行すべきコマンド
   ("os.system()" に渡されます) が入っています。二つめの要素は与えられ
   た MIME タイプに対する mailcap エントリです。一致する MIME タイプが
   見つからなかった場合、 "(None, None)" が返されます。

   *key* は desired フィールドの値で、実行すべき動作のタイプを表現しま
   す; ほとんどの場合、単に MIME 形式のデータ本体を見たいと思うので、
   標準の値は 『view』 になっています。与えられた MIME 型をもつ新たな
   データ本体を作成した場合や、既存のデータ本体を置き換えたい場合には
   、』view』 の他に 『compose』 および 『edit』 を取ることもできます
   。これらフィールドの完全なリストについては **RFC 1524** を参照して
   ください。

   *filename* はコマンドライン中で "%s" に代入されるファイル名です; 標
   準の値は "'/dev/null'" で、たいていこの値を使いたいわけではないはず
   です。従って、ファイル名を指定してこのフィールドを上書きする必要が
   あるでしょう。

   *plist* は名前付けされたパラメタのリストです; 標準の値は単なる空の
   リストです。リスト中の各エントリはパラメタ名を含む文字列、等号
   ("'='")、およびパラメタの値でなければなりません。mailcap エントリに
   は "%{foo}" といったような名前つきのパラメタを含めることができ、』
   foo』 と名づけられたパラメタの値に置き換えられます。例えば、コマン
   ドライン "showpartial %{id} %{number} %{total}" が mailcap ファイル
   にあり、*plist* が "['id=1', 'number=2', 'total=3']" に設定されてい
   れば、コマンドラインは "'showpartial 1 2 3'" になります。

   mailcap ファイル中では、オプションの 「test」 フィールドを使って、(
   計算機アーキテクチャや、利用しているウィンドウシステムといった) 何
   らかの外部条件をテストするよう指定することができます。
   "findmatch()" はこれらの条件を自動的にチェックし、チェックが失敗し
   たエントリを読み飛ばします。

mailcap.getcaps()

   MIME タイプを mailcap ファイルのエントリに対応付ける辞書を返します
   。この辞書は "findmatch()" 関数に渡されるべきものです。エントリは辞
   書のリストとして記憶されますが、この表現形式の詳細について知ってお
   く必要はないでしょう。

   mailcap 情報はシステム上で見つかった全ての mailcap ファイルから導出
   されます。ユーザ設定の mailcap ファイル "$HOME/.mailcap" はシステム
   の mailcap ファイル "/etc/mailcap" 、 "/usr/etc/mailcap" 、および
   "/usr/local/etc/mailcap" の内容を上書きします。

以下に使用例を示します:

   >>> import mailcap
   >>> d = mailcap.getcaps()
   >>> mailcap.findmatch(d, 'video/mpeg', filename='tmp1223')
   ('xmpeg tmp1223', {'view': 'xmpeg %s'})
