class TMail::Maildir
Constants
- PORT_CLASS
- TOO_OLD
Public Class Methods
new( dir = nil )
click to toggle source
# File lib/tmail/mailbox.rb, line 392 def initialize( dir = nil ) @dirname = dir || ENV['MAILDIR'] raise ArgumentError, "not directory: #{@dirname}" unless FileTest.directory? @dirname @new = "#{@dirname}/new" @tmp = "#{@dirname}/tmp" @cur = "#{@dirname}/cur" end
unique_number()
click to toggle source
# File lib/tmail/mailbox.rb, line 385 def Maildir.unique_number synchronize { @seq += 1 return @seq } end
Public Instance Methods
check_tmp()
click to toggle source
# File lib/tmail/mailbox.rb, line 462 def check_tmp old = Time.now.to_i - TOO_OLD each_filename(@tmp) do |full, fname| if FileTest.file? full and File.stat(full).mtime.to_i < old File.unlink full end end end
close()
click to toggle source
# File lib/tmail/mailbox.rb, line 409 def close end
directory()
click to toggle source
# File lib/tmail/mailbox.rb, line 401 def directory @dirname end
each_new_port() { |port_class| ... }
click to toggle source
# File lib/tmail/mailbox.rb, line 450 def each_new_port mail_files(@new).each do |path| dest = @cur + '/' + File.basename(path) File.rename path, dest yield PORT_CLASS.new(dest) end check_tmp end
Also aliased as: each_newmail
each_port() { |port_class| ... }
click to toggle source
# File lib/tmail/mailbox.rb, line 412 def each_port mail_files(@cur).each do |path| yield PORT_CLASS.new(path) end end
inspect()
click to toggle source
# File lib/tmail/mailbox.rb, line 405 def inspect "#<#{self.class} #{@dirname}>" end
new_port() { |f| ... }
click to toggle source
# File lib/tmail/mailbox.rb, line 428 def new_port fname = nil tmpfname = nil newfname = nil begin fname = "#{Time.now.to_i}.#{$$}_#{Maildir.unique_number}.#{Socket.gethostname}" tmpfname = "#{@tmp}/#{fname}" newfname = "#{@new}/#{fname}" end while FileTest.exist? tmpfname if block_given? File.open(tmpfname, 'w') {|f| yield f } File.rename tmpfname, newfname PORT_CLASS.new(newfname) else File.open(tmpfname, 'w') {|f| f.write "\n\n" } PORT_CLASS.new(tmpfname) end end
Also aliased as: new_mail
reverse_each_port() { |port_class| ... }
click to toggle source
# File lib/tmail/mailbox.rb, line 420 def reverse_each_port mail_files(@cur).reverse_each do |path| yield PORT_CLASS.new(path) end end
Also aliased as: reverse_each
Private Instance Methods
each_filename( dir ) { |path, fname| ... }
click to toggle source
# File lib/tmail/mailbox.rb, line 483 def each_filename( dir ) Dir.foreach(dir) do |fname| path = "#{dir}/#{fname}" if fname[0] != ?. and FileTest.file? path yield path, fname end end end
mail_files( dir )
click to toggle source
# File lib/tmail/mailbox.rb, line 475 def mail_files( dir ) Dir.entries(dir) .select {|s| s[0] != ?. } .sort_by {|s| s.slice(/\A\d+/).to_i } .map {|s| "#{dir}/#{s}" } .select {|path| FileTest.file? path } end