Module: Enumerable

Defined in:
lib/ruby_peter_v/single.rb

Instance Method Summary collapse

Instance Method Details

#single(&block) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/ruby_peter_v/single.rb', line 5

def single(&block)
  filtered = block_given? ? self.select(&block) : self
  if filtered.respond_to?(:size)
    _size = filtered.size
    message = _size
  else
    _size = filtered.first(2).size
    message = "greater than 1 (on Enumerable, the size cannot be calculated)"
  end
  raise RubyPeterV::UniquenessError, "size of collection was #{message}." if _size > 1
  filtered.first
end