##
12.10.1 MultiFile オブジェクト

`MultiFile` インスタンスには以下のメソッドがあります:

`readline`( | str)

  一行データを読みます。その行が (セクション分割子や終了マーカや本物の EOF でない) データの場合、行データを返します。その行がもっとも最近 スタックにプッシュされた境界パターンにマッチした場合、`''` を返し、 マッチした内容が終了マーカかそうでないかによって `self.last` を 1 か 0 に設定します。行がその他のスタックされている境界パターンにマッチ した場合、エラーが送出されます。背後のストリームオブジェクトにおける ファイルの終端に到達した場合、全ての境界がスタックから除去されていない 限りこのメソッドは `Error` を送出します。

`readlines`( | str)

  このパートの残りの全ての行を文字列のリストとして返します。

`read`( | )

  次のセクションまでの全ての行を読みます。読んだ内容を単一の (複数行にわたる) 文字列として返します。このメソッドには size 引数をとらないので注意してください！

`seek`( | pos[, whence])

  ファイルを seek します。seek する際のインデクスは現在のセクションの 開始位置からの相対位置になります。pis および whence 引数 はファイルの seek における引数と同じように解釈されます。

`tell`( | )

  現在のセクションの先頭に対して相対的なファイル位置を返します。

`next`( | )

  次のセクションまで行を読み飛ばします (すなわち、セクション分割子 または終了マーカが消費されるまで行データを読みます)。 次のセクションがあった場合には真を、終了マーカが発見された場合 には偽を返します。最も最近スタックにプッシュされた境界パターンを 最有効化します。

`is_data`( | str)

  str がデータの場合に真を返し、セクション分割子の可能性がある 場合には偽を返します。このメソッドは行の先頭が (全ての MIME 境界が 持っている) `'-``-'` 以外になっているかを調べるように 実装されていますが、導出クラスで上書きできるように宣言されています。

  このテストは実際の境界テストにおいて高速性を保つために使われて いるので注意してください; このテストが常に false を返す場合、 テストが失敗するのではなく、単に処理が遅くなるだけです。

`push`( | str)

  境界文字列をスタックにプッシュします。この境界文字列の適切に修飾された バージョンが入力ファイル中に見つかった場合、セクション分割子 または終了マーカであると解釈されます。それ以降の全てのデータ読み出し は、`pop()` を呼んで境界文字列を除去するか、`next()` を呼んで境界文字列を再有効化しないかぎり、ファイル終端を示す空文字列を 返します。

  一つ以上の境界をプッシュすることは可能です。もっとも最近プッシュされた 境界に遭遇すると EOF が返ります; その他の境界に遭遇するとエラーが 送出されます。

`pop`( | )

  セクション境界をポップします。この境界はもはや EOF として解釈 されません。

`section_divider`( | str)

  境界をセクション分割子にします。標準では、このメソッドは (全ての MIME 境界が持っている) `'-``-'` を境界文字列の 先頭に追加しますが、これは導出クラスで上書きできるように宣言 されています。末尾の空白は無視されることから考えて、このメソッド では LF や CR-LF を追加する必要はありません。

`end_marker`( | str)

  境界文字列を終了マーカ行にします。標準では、このメソッドは (MIME マルチパートデータのメッセージ終了マーカのように) `'-``-'` を境界文字列の先頭に追加し、かつ `'-``-'` を境界文字列の末尾に追加しますが、 これは導出クラスで上書きできるように宣言されています。 末尾の空白は無視されることから考えて、このメソッド では LF や CR-LF を追加する必要はありません。

最後に、`MultiFile` インスタンスは二つの公開されたインスタンス 変数を持っています:

`level`
  現在のパートにおける入れ子の深さです。

`last`
  最後に見つかったファイル終了イベントがメッセージ終了マーカ であった場合に真となります。