I’ve had the need to find the “intersection” of 2 ranges, i.e. the maximal range that is wholly contained within those 2 ranges.
e.g. as a basic example:
(1..5).intersection(3..7) => (3..5)
I was surprised that there is no such method on Range
since it seems generally useful. There are some subtleties to defining it on Range
itself since it’s unclear how it should work for “inverted” ranges (i.e. (5..1)
) and returning nil
when there’s no overlap doesn’t allow ranges to be “closed under intersection” since there’s no generic notion of an empty range.
I put up this PR with my implementation in case anyone has feedback or thinks it’s worth incorporating for others to leverage.
Curious what y’all think.