class MailParser::HeaderItem
Header
field
Attributes
raw[R]
@return [String] raw field value
Public Class Methods
new(name, raw, opt={})
click to toggle source
@param [String] name header field name @param [String] raw header field value @param [Hash] opt options @option opt [Boolean] :decode_mime_header (false) decode MIME header @option opt [String] :output_charset (nil) output encoding name @option opt [Boolean] :strict (false) raise ParseError
exception when message is invalid
# File lib/mailparser.rb, line 60 def initialize(name, raw, opt={}) @name = name @raw = raw @parsed = nil @opt = opt end
Public Instance Methods
parse()
click to toggle source
@return [header field value] parsed header object
# File lib/mailparser.rb, line 71 def parse() return @parsed if @parsed if HEADER_PARSER.key? @name then begin @parsed = HEADER_PARSER[@name].parse(@name, @raw, @opt) rescue ParseError raise if @opt[:strict] @parsed = Loose.parse(@name, @raw, @opt) end else r = @raw.chomp.gsub(/\r?\n/, '').gsub(/\t/, ' ') if @opt[:decode_mime_header] then @parsed = RFC2047.decode(r, @opt) elsif @opt[:output_charset] @parsed = @opt[:charset_converter].call(@opt[:output_charset], @opt[:output_charset], r) else @parsed = r end end if @parsed class <<@parsed attr_accessor :raw end @parsed.raw = @raw end # Content-Type, Content-Disposition parameter for RFC2231 if ["content-type", "content-disposition"].include? @name new = RFC2231.parse_param @parsed.params, @opt @parsed.params.replace new end return @parsed end