require 'facets/core/range/umbrella'

class Range

  # Uses the Range#umbrella method to determine
  # if another Range is _anywhere_ within this Range.
  #
  #   (1..3).within?(0..4)  #=> true
  #
  def within?(rng)
    case rng.umbrella(self)
    when [0,0], [-1,0], [0,-1], [-1,-1]
      return true
    else
      return false
    end
  end

end



#  _____         _
# |_   _|__  ___| |_
#   | |/ _ \/ __| __|
#   | |  __/\__ \ |_
#   |_|\___||___/\__|
#
=begin test

  require 'test/unit'

  class TCRange < Test::Unit::TestCase

    def test_within?
      assert( (4..5).within?(3..6) )
      assert( (3..6).within?(3..6) )
      assert(! (2..5).within?(3..6) )
      assert(! (5..7).within?(3..6) )
    end

  end

=end
