|
|
|
Ruby `Range` extensions. In order to comply with new features related to date/time ranges, a couple of new methods/operations are now introduced on the original [`Range`](https://ruby-doc.org/core-2.5.1/Range.html) class.
|
|
|
|
|
|
|
|
# Methods Provided
|
|
|
|
|
|
|
|
### `&` or `intersection`
|
|
|
|
|
|
|
|
A way to get the intersection between 2 ranges, just like: `(5..15) & (10..20) === (10..15)`. See the examples:
|
|
|
|
|
|
|
|
![Range Intersection](https://lh6.googleusercontent.com/RIupg6XD5R9xXXcECk8PEIH7Udp2C3tQjJw32UE5hK7Dd5QGWV3W9TxnX_nBFFwThPlxhtiOCvZzyGSL_ui0=w1920-h979-rw)
|
|
|
|
|
|
|
|
### `|` or `union`
|
|
|
|
|
|
|
|
A way to concatenate 2 ranges, regardless if they intersect or not. It basically gets the lowest and highest values. Like: `(5..15) | (10..20) === (5..20)`. See the examples:
|
|
|
|
|
|
|
|
![Range Add](https://lh4.googleusercontent.com/9oL-NlXIl93x488YYkqwIQwlJvWeDuk-aiUyifWUCzr3G7JRXavncPhML0M7TydJFd-TB76AABeLRxXJLxfX=w1920-h979-rw)
|
|
|
|
|
|
|
|
### `-` or `subtract`
|
|
|
|
|
|
|
|
A way to remove the intersection portion of the left side range of the operation. Like: `(5..15) - (10..20) === (5..10)`. Non-intersecting ranges have no effect whatsoever. See the examples:
|
|
|
|
|
|
|
|
![Range Subtract](https://lh5.googleusercontent.com/Sv-sTlW2XemBqqpjajzvvNUKnjTTXW3v8BDmOvh_D0AdC54xPVgk2HpcmnNAtJ8oT9O-n0v_QH6Coe7jc7ET=w1920-h979-rw)
|
|
|
|
|
|
|
|
### `+` or `add`
|
|
|
|
|
|
|
|
A way to connect or add the extra portion of the right side range into the left side range. Like: `(5..15) + (10..20) === (5..20)`. Non-intersecting ranges have no effect whatsoever. See the examples:
|
|
|
|
|
|
|
|
![Range Union](https://lh3.googleusercontent.com/Bdgrmbs8BWRWhMdHttCQnjXsW3RXrPns-9xF_eW3ZayiyX8-4uSiqGHmqYdYrOqTrZsLKvvlLi7aTojHJ7GB=w1920-h979-rw) |
|
|
|
\ No newline at end of file |