1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
# encoding: utf-8
# frozen_string_literal: true
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
# Insert the field in sorted order.
#
# Heavily based on bisect.insort from Python, which is:
# Copyright (C) 2001-2013 Python Software Foundation.
# Licensed under <http://docs.python.org/license.html>
# From <http://hg.python.org/cpython/file/2.7/Lib/bisect.py>
def <<( new_field )
lo = 0
hi = size
while lo < hi
mid = (lo + hi).div(2)
if new_field < self[mid]
hi = mid
else
lo = mid + 1
end
end
insert(lo, new_field)
end
end
end
|