module Enumerable def to_a(n = nil) result = [] inclusion_condition = true return result if n == 0 and !block_given? each do |*elements| if block_given? values = result.last inclusion_condition = yield(*values) unless values.nil? else inclusion_condition = n != result.size end if inclusion_condition result << elements else result.pop break result end end result end end