# # # # # # # # #
# /33/object_not.rb
#
# by               Jan Lelis
# e-mail:          mail@janlelis.de
# type/version:    ruby 1.9
# snippet url:     http://rbJL.net/33/object_not.rb
# original post:   http://rbJL.net/33-new-features-of-ruby-zucker-version-2-and-3
# license:         CC-BY (DE)
#
# (c) 2010 Jan Lelis.

class Object
  def not
    NotClass.new self
  end

  class NotClass < BasicObject
    def initialize(receiver)
      @receiver = receiver
    end

    def method_missing(m, *args, &block)
      not @receiver.public_send( m, *args, &block ) # this not is the built-in not operator
    end
  end
end

# usage
#  [1,2,3].not.empty? # true