class Mail::PartsList
Attributes
parts[R]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/mail/parts_list.rb, line 7 def initialize(*args) @parts = Array.new(*args) super @parts end
Public Instance Methods
attachments()
click to toggle source
# File lib/mail/parts_list.rb, line 23 def attachments Mail::AttachmentsList.new(@parts) end
collect() { |o| ... }
click to toggle source
# File lib/mail/parts_list.rb, line 27 def collect if block_given? ary = PartsList.new each { |o| ary << yield(o) } ary else to_a end end
Also aliased as: map
collect!()
click to toggle source
# File lib/mail/parts_list.rb, line 42 def collect! raise NoMethodError, "#collect! is not defined, please call #collect and create a new PartsList" end
map!()
click to toggle source
# File lib/mail/parts_list.rb, line 38 def map! raise NoMethodError, "#map! is not defined, please call #collect and create a new PartsList" end
sort()
click to toggle source
# File lib/mail/parts_list.rb, line 46 def sort self.class.new(@parts.sort) end
sort!(order)
click to toggle source
# File lib/mail/parts_list.rb, line 50 def sort!(order) # stable sort should be used to maintain the relative order as the parts are added i = 0; sorted = @parts.sort_by do |a| # OK, 10000 is arbitrary... if anyone actually wants to explicitly sort 10000 parts of a # single email message... please show me a use case and I'll put more work into this method, # in the meantime, it works :) [get_order_value(a, order), i += 1] end @parts.clear sorted.each { |p| @parts << p } end
Private Instance Methods
get_order_value(part, order)
click to toggle source
# File lib/mail/parts_list.rb, line 65 def get_order_value(part, order) if part.respond_to?(:content_type) && !part[:content_type].nil? order.index(part[:content_type].string.downcase) || 10000 else 10000 end end