Class: Sisimai::Mail
- Inherits:
-
Object
- Object
- Sisimai::Mail
- Defined in:
- lib/sisimai/mail.rb,
lib/sisimai/mail/mbox.rb,
lib/sisimai/mail/stdin.rb,
lib/sisimai/mail/memory.rb,
lib/sisimai/mail/maildir.rb
Overview
Sisimai::Mail is a handler of UNIX mbox or Maildir for reading each mail. It is a wrapper class of Sisimai::Mail::Mbox, Sisimai::Mail::Maildir, and Sisimai::Mail::Memory classes.
Defined Under Namespace
Classes: Maildir, Mbox, Memory, STDIN
Instance Attribute Summary collapse
-
#data ⇒ Object
Returns the value of attribute data.
-
#kind ⇒ Object
readonly
:path [String] path to mbox or Maildir/ :kind [String] Data type: mailbox, maildir, or stdin :data [Sisimai::Mail::] Object.
-
#path ⇒ Object
readonly
:path [String] path to mbox or Maildir/ :kind [String] Data type: mailbox, maildir, or stdin :data [Sisimai::Mail::] Object.
Instance Method Summary collapse
-
#initialize(argv1) ⇒ Sisimai::Mail, Nil
constructor
Constructor of Sisimai::Mail.
-
#read ⇒ String
Alias method of Sisimai::Mail.data.read().
Constructor Details
#initialize(argv1) ⇒ Sisimai::Mail, Nil
Constructor of Sisimai::Mail
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/sisimai/mail.rb', line 14 def initialize(argv1) classname = nil parameter = {'path' => argv1, 'kind' => nil, 'data' => nil} if argv1.is_a?(::String) # Path to mail or '<STDIN>' ? if argv1 == '<STDIN>' # Sisimai::Mail.new('<STDIN>') classname = "#{self.class.to_s}::STDIN" parameter['kind'] = 'stdin' parameter['path'] = '<STDIN>' else # The argumenet is a mailbox or a Maildir/. mediatype = argv1.include?("\n") ? 'memory' : File.ftype(argv1) if mediatype == 'file' # The argument is a file, it is an mbox or email file in Maildir/ classname = "#{self.class.to_s}::Mbox" parameter['kind'] = 'mailbox' elsif mediatype == 'directory' # The agument is not a file, it is a Maildij/ classname = "#{self.class.to_s}::Maildir" parameter['kind'] = 'maildir' elsif mediatype == 'memory' # The argument is an email string classname = "#{self.class.to_s}::Memory" parameter['kind'] = 'memory' parameter['path'] = 'MEMORY' end end elsif argv1.is_a?(IO) # Read from STDIN, The argument neither a mailbox nor a Maildir/. classname = "#{self.class.to_s}::STDIN" parameter['kind'] = 'stdin' parameter['path'] = '<STDIN>' end return nil unless classname classpath = classname.gsub('::', '/').downcase require classpath parameter['data'] = Module.const_get(classname).new(argv1) @path = parameter['path'] @kind = parameter['kind'] @data = parameter['data'] end |
Instance Attribute Details
#data ⇒ Object
Returns the value of attribute data.
9 10 11 |
# File 'lib/sisimai/mail.rb', line 9 def data @data end |
#kind ⇒ Object (readonly)
:path [String] path to mbox or Maildir/ :kind [String] Data type: mailbox, maildir, or stdin :data [Sisimai::Mail::] Object
8 9 10 |
# File 'lib/sisimai/mail.rb', line 8 def kind @kind end |
#path ⇒ Object (readonly)
:path [String] path to mbox or Maildir/ :kind [String] Data type: mailbox, maildir, or stdin :data [Sisimai::Mail::] Object
8 9 10 |
# File 'lib/sisimai/mail.rb', line 8 def path @path end |
Instance Method Details
#read ⇒ String
Alias method of Sisimai::Mail.data.read()
65 66 67 68 |
# File 'lib/sisimai/mail.rb', line 65 def read return "" if data.nil? return data.read end |