I see a potential flaw in this if the ends were equal but other has exclude end. a: |-----| (1...6, exclude end) b: |---| (3..6) a.include?(6) #=> false b.include?(6) #=> true a.span?(b) #=> false b.span?(a) #=> true, but should be false, IMHO. I think the only way to do this is to make a mapping of self other operation .. ... >=/>/etc ... .. >=/>/etc Dan Daniel Schierbeck wrote: > Daniel Finnie has a point about end-excluding ranges. But in that case, > wouldn't this suffice? > > def span? other > include? other.first and include? other.last > end > > Cheers, > Daniel