# File lib/core/facets/array/intersection.rb, line 7 def intersection array = uniq.sort_by { |e| Range === e ? e.first : e } array.inject() do |c, e| f = (Range === c ? c.last : c) v = (Range === e ? e.first : e) case f <=> v when -1 then return nil when 0 then f else if Range === e v..([f, e.last].min) else v end end end end