0.05
No commit activity in last 3 years
No release in over 3 years
A gem that adds range methods to Ruby's Range and Array classes. (Range#+, Range#-, Array#rangify, Array#intersection, Array#missing)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
 Dependencies
 Project Readme

RangeOperators¶ ↑

This gem will mixin range operations into Ruby's Range and Array classes.

Range Methods:: Addition and subtraction

Array Methods

Combining elements into ranges, determining intersection of elements,

and determining missing elements

It assumes inclusive ranges (ie. 1..4) and range.first <= range.last. Also, the objects making up the ranges must have #succ and #<=> methods.

Usage¶ ↑

The methods added are Range#- (alias Range#minus), Range#+ (alias Range#plus), Array#rangify, Array#intersection, and Array#missing.

Examples:

irb > require 'range_operators'

irb > (1..10) - (4..6) => [1..3, 7..10]

irb > (1..10).minus(9..12) => [1..8]

Note: #- requires that the second operand have a #- (integer) method defined (ie. Fixnum, Bignum, and Date). (This allows the determination of a previous/predecessor value of an object.)


irb > (1..10) + (9..12) => [1..12]

irb > (1..10).plus(15..20) => [1..10, 15..20]


irb > [1,2,3,6,7,8].rangify => [1..3, 6..8]

irb > [10..15, 16..20, 21, 22].rangify => [10..22]


irb > [1, 2].intersection => nil

irb > [1..10, 1].intersection => 1

irb > [5..10, 1..10, 4..8 ].intersection => 5..8

Note: #intersection will determine the values in common to all of the elements.


irb > [100, 9..11, 14, 1..5, 16, 10..12, 17..17].missing => [6..8, 13, 15, 18..99]

Note: Like #-, #missing requires that the second operand have a #- (integer) method.