Class: RMail::Parser

Inherits:
Object
  • Object
show all
Defined in:
lib/rmail/parser.rb,
lib/rmail/parser/multipart.rb,
lib/rmail/parser/pushbackreader.rb

Overview

The RMail::Parser class creates RMail::Message objects from Ruby IO objects or strings.

To parse from a string:

message = RMail::Parser.read(the_string)

To parse from an IO object:

message = File.open('my-message') { |f|
  RMail::Parser.read(f)
}

You can also parse from STDIN, etc.

message = RMail::Parser.read(STDIN)

In all cases, the parser consumes all input.

Defined Under Namespace

Classes: Error, Handler, MultipartReader, PushbackReader

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeParser

Creates a new parser. Messages of message_class will be created by the parser. By default, the parser will create RMail::Message objects.


322
323
324
# File 'lib/rmail/parser.rb', line 322

def initialize()
  @chunk_size = nil
end

Instance Attribute Details

#chunk_sizeObject

Change the chunk size used to read the message. This is useful mostly for testing.


338
339
340
# File 'lib/rmail/parser.rb', line 338

def chunk_size
  @chunk_size
end

Class Method Details

.read(input) ⇒ Object

Parse a message from the IO object io and return a new message. The io object can also be a string. This is just shorthand for:

RMail::Parser.new.parse(io)

345
346
347
# File 'lib/rmail/parser.rb', line 345

def Parser.read(input)
  Parser.new.parse(input)
end

Instance Method Details

#parse(input) ⇒ Object

Parse a message from the IO object io and return a new message. The io object can also be a string.


328
329
330
331
332
333
334
# File 'lib/rmail/parser.rb', line 328

def parse(input)
  handler = RMail::Parser::Handler.new
  parser = RMail::StreamParser.new(input, handler)
  parser.chunk_size = @chunk_size if @chunk_size
  parser.parse
  return handler.message
end