Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > net/imapライブラリ > Net::IMAP::BodyTypeBasicクラス

class Net::IMAP::BodyTypeBasic + Struct

クラスの継承リスト: Net::IMAP::BodyTypeBasic < Struct < Enumerable < Object < Kernel < BasicObject

要約

text 型(Net::IMAP::BodyTypeText)、 multipart 型(Net::IMAP::BodyTypeMultipart)、 message 型(Net::IMAP::BodyTypeMessage)、 のいずれでもないようなメッセージボディ構造を表すクラスです。

添付ファイルなどを表します。 詳しくは MIME のRFC([RFC2045])を参照してください。

特異メソッド

new(*args) -> Class

Struct クラスに新しいサブクラスを作って、それを返します。

サブクラスでは構造体のメンバに対するアクセスメソッドが定義されています。

dog = Struct.new("Dog", :name, :age)
fred = dog.new("fred", 5)
fred.age = 6
printf "name:%s age:%d", fred.name, fred.age
#=> "name:fred age:6" を出力します

実装の都合により、クラス名の省略は後づけの機能でした。 メンバ名に String を指定できるのは後方互換性のためだと考えた方が良いでしょう。 したがって、メンバ名は Symbol で指定するのが無難です。

[PARAM] args:
構造体を定義するための可変長引数。String または Symbol を指定します。

第一引数が String の場合

args[0] が String の場合、クラス名になるので、大文字で始まる必要 があります。つまり、以下のような指定はエラーになります。

p Struct.new('foo', 'bar')
# => -:1:in `new': identifier foo needs to be constant (NameError)

また args[1..-1] は、SymbolString で指定します。

p Struct.new("Foo", :foo, :bar)   # => Struct::Foo

第一引数が Symbol の場合

args[0] が Symbol の場合、生成した構造体クラスは名前の無い クラスになります。名前の無いクラスは最初に名前を求める際に代入され ている定数名を検索し、見つかった定数名をクラス名とします。

Foo = Struct.new(:foo, :bar)
p Foo                             # => Foo

[SEE_ALSO] Class.new

new(*args) -> Struct
self[*args] -> Struct

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体オブジェクトを生成して返します。

[PARAM] args:
構造体の初期値を指定します。メンバの初期値は指定されなければ nil です。
[RETURN]
構造体クラスのインスタンス。
[EXCEPTION] ArgumentError:
構造体のメンバの数よりも多くの引数を指定した場合に発生します。
Foo = Struct.new(:foo, :bar)
foo = Foo.new(1)
p foo.values      # => [1, nil]
members -> [Symbol]

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの名前(Symbol)の配列を返します。

Foo = Struct.new(:foo, :bar)
p Foo.members      # => [:foo, :bar]

インスタンスメソッド

self == other -> bool

自身と other のクラスが同じであり、各メンバが == メソッドで比較して等しい場合に true を返します。そうでない場合に false を返します。

[PARAM] other:
自身と比較したいオブジェクトを指定します。
Dog = Struct.new(:name, :age)
dog1 = Dog.new("fred", 5)
dog2 = Dog.new("fred", 5)

p dog1 == dog2                #=> true
p dog1.eql?(dog2)             #=> true
p dog1.equal?(dog2)           #=> false

[SEE_ALSO] Struct#eql?

self[member] -> object

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの値を返します。

[PARAM] member:
Fixnum でメンバのインデックスを指定します。 Symbol, String でメンバの名前を指定します。
[EXCEPTION] IndexError:
member が整数で存在しないメンバを指定した場合に発生します。
[EXCEPTION] NameError:
member が String, Symbol で存在しないメンバを指定した場合に発生します。
Foo = Struct.new(:foo, :bar)
obj = Foo.new('FOO', 'BAR')
p obj[:foo]     # => "FOO"
p obj['bar']    # => "BAR"
# p obj[:baz]     # => in `[]': no member 'baz' in struct (NameError)
p obj[0]        # => "FOO"
p obj[1]        # => "BAR"
p obj[-1]       # => "BAR"    # Array のように負のインデックスも指定できます。
p obj[2]        # => in `[]': offset 2 too large for struct(size:2) (IndexError)
self[member] = value

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体の member で指定されたメンバの値を value にして value を返します。

[PARAM] member:
Fixnum でメンバのインデックスを指定します。 Symbol, String でメンバの名前を指定します。
[PARAM] value:
メンバに設定する値を指定します。
[EXCEPTION] IndexError:
member が整数で存在しないメンバを指定した場合に発生します。
[EXCEPTION] NameError:
member が String, Symbol で存在しないメンバを指定した場合に発生します。
content_id -> String | nil

Content-ID の値を文字列で返します。

[SEE_ALSO] [RFC2045]

description -> String | nil

Content-Description の値を文字列で返します。

[SEE_ALSO] [RFC2045]

disposition -> Net::IMAP::ContentDisposition | nil

Content-Dispotition の値を返します。

Net::IMAP::ContentDisposition オブジェクトを返します。

[SEE_ALSO] [RFC1806], [RFC2183]

each {|value| ... } -> self
each -> Enumerator

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体の各メンバに対して繰り返します。

each_pair {|member, value| ... } -> self
each_pair -> Enumerator

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバ名(Symbol)と値の組を引数にブロックを繰り返し実行します。

Foo = Struct.new(:foo, :bar)
Foo.new('FOO', 'BAR').each_pair {|m, v| p [m,v]}
# => [:foo, "FOO"]
     [:bar, "BAR"]
encoding -> String

Content-Transfer-Encoding の値を文字列で返します。

[SEE_ALSO] [RFC2045]

eql?(other) -> bool

自身と other のクラスが同じであり、各メンバが eql? メソッドで比較して等しい場合に true を返します。そうでない場合に false を返します。

[PARAM] other:
自身と比較したいオブジェクトを指定します。
Dog = Struct.new(:name, :age)
dog1 = Dog.new("fred", 5)
dog2 = Dog.new("fred", 5)

p dog1 == dog2                #=> true
p dog1.eql?(dog2)             #=> true
p dog1.equal?(dog2)           #=> false

[SEE_ALSO] Struct#==

equal?(other) -> bool

指定された other が self 自身である場合のみ真を返します。 これは Object クラスで定義されたデフォルトの動作で す。

[SEE_ALSO] Struct#eql?, Struct#==

extension -> Array | nil

メッセージの拡張データを返します。

hash -> Integer

自身が保持するメンバのハッシュ値を元にして算出した整数を返します。 自身が保持するメンバの値が変化すればこのメソッドが返す値も変化します。

Dog = Struct.new(:name, :age)
dog = Dog.new("fred", 5)
p dog.hash                    #=> 7917421
dog.name = "john"
p dog.hash                    #=> -38913223
language -> String | [String] | nil

[RFC1766] で定義されているボディ言語を表わす 文字列もしくは文字列の配列を返します。

length -> Fixnum
size -> Fixnum

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの数を返します。

md5 -> String | nil

ボディの MD5 値を文字列で返します。

subtype -> String
media_subtype -> String

MIME のメディアタイプのサブタイプを返します。

media_subtype は obsolete です。

[SEE_ALSO] Net::IMAP::BodyTypeBasic#media_type

media_type -> String

MIME のメディアタイプを返します。

[SEE_ALSO] Net::IMAP::BodyTypeBasic#subtype

members -> [String]

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの名前(文字列)の配列を返します。

Foo = Struct.new(:foo, :bar)
p Foo.new.members  # => ["foo", "bar"]
multipart? -> bool

マルチパートかどうかを返します。 false を返します。

param -> { String => String } | nil

MIME のボディパラメータをハッシュテーブルで返します。

ハッシュテーブルのキーがパラメータ名となります。

[SEE_ALSO] [RFC2045]

size -> Integer

ボディのサイズのオクテット数を返します。

values -> [object]
to_a -> [object]

(このメソッドは Struct の下位クラスにのみ定義されています) 構造体のメンバの値を配列にいれて返します。

例えば以下のようにして passwd のエントリを出力できます。

require 'etc'
print Etc.getpwuid.values.join(":"), "\n"
values_at(*members) -> [object]

(このメソッドは Struct の下位クラスにのみ定義されています) 引数で指定されたメンバの値の配列を返します。

[PARAM] members:
FixnumRange でメンバのインデックスを指定します。
[EXCEPTION] IndexError:
member が整数で存在しないメンバを指定した場合に発生します。
Foo = Struct.new(:foo, :bar, :baz)
obj = Foo.new('FOO', 'BAR', 'BAZ')
p obj.values_at(0, 1, 2)    # => ["FOO", "BAR", "BAZ"]
class Net::IMAP::BodyTypeBasic