Class: MailParser::Header

Inherits:
Object
  • Object
show all
Defined in:
lib/mailparser.rb

Overview

Header part

Instance Method Summary collapse

Constructor Details

#initialize(opt = {}) ⇒ Header

Returns a new instance of Header.

Parameters:

  • opt (Hash) (defaults to: {})

    options

Options Hash (opt):

  • :decode_mime_header (Boolean)

    decode MIME header

  • :output_charset (String)

    output encoding name

  • :strict (Boolean)

    raise ParseError exception when message is invalid



113
114
115
116
117
118
# File 'lib/mailparser.rb', line 113

def initialize(opt={})
  @hash = {}
  @parsed = {}
  @raw = {}
  @opt = opt
end

Instance Method Details

#[](name) ⇒ Array<header field value>

header field value

Parameters:

  • name (String)

    header field name

Returns:

  • (Array<header field value>)


133
134
135
136
137
138
# File 'lib/mailparser.rb', line 133

def [](name)
  return nil unless @hash.key? name
  return @parsed[name] if @parsed.key? name
  @parsed[name] = @hash[name].map{|h| h.parse}.compact
  return @parsed[name]
end

#add(name, body) ⇒ void

This method returns an undefined value.

add header field

Parameters:

  • name (String)

    header field name

  • body (String)

    header field value



124
125
126
127
128
# File 'lib/mailparser.rb', line 124

def add(name, body)
  name = name.downcase
  @hash[name] = [] unless @hash.key? name
  @hash[name] << HeaderItem.new(name, body, @opt)
end

#each {|key, value| ... } ⇒ void

This method returns an undefined value.

repeat block for each header field

Yields:

  • (key, value)

Yield Parameters:

  • key (String)

    header field name

  • value (header field value)

    header field value



165
166
167
168
169
# File 'lib/mailparser.rb', line 165

def each()
  @hash.each do |k, v|
    yield k, self[k]
  end
end

#key?(name) ⇒ Boolean

Returns true if header field exists.

Parameters:

  • name (String)

    header field name

Returns:

  • (Boolean)

    true if header field exists



156
157
158
# File 'lib/mailparser.rb', line 156

def key?(name)
  return @hash.key?(name)
end

#keysArray<String>

Returns header names.

Returns:

  • (Array<String>)

    header names



150
151
152
# File 'lib/mailparser.rb', line 150

def keys()
  return @hash.keys
end

#raw(name) ⇒ Array<String>

Returns raw header value.

Parameters:

  • name (String)

    header field name

Returns:

  • (Array<String>)

    raw header value



142
143
144
145
146
147
# File 'lib/mailparser.rb', line 142

def raw(name)
  return nil unless @hash.key? name
  return @raw[name] if @raw.key? name
  @raw[name] = @hash[name].map{|h| h.raw}
  return @raw[name]
end