# encoding: utf-8
module Mail

  # Field List class provides an enhanced array that keeps a list of 
  # email fields in order.  And allows you to insert new fields without
  # having to worry about the order they will appear in.
  class FieldList < Array

    include Enumerable

    def <<( new_field )
      current_entry = self.rindex(new_field.name)
      if current_entry
        self.insert((current_entry + 1), new_field)
      else
        insert_idx = -1
        self.each_with_index do |item, idx|
          case item <=> new_field
          when -1
            next
          when 0
            next
          when 1
            insert_idx = idx
            break
          end
        end
        insert(insert_idx, new_field)
      end
    end
    
  end
end