Package for a subclass of Range, RangeExtd, containing RangeExtd::Infinity and RangeExtd::Nowhere. RangeExtd defines ranges that enable an exclusion of the begin boundary, in addition to the end boundary as in the built-in Range, and accepts open-ended ranges to infinity for either (or both) positive/negative direction. The open-ended boundaries are represented by two constant objects, POSITIVE and NEGATIVE of RangeExtd::Infinity, and they are a generalised Infinity of Float::INFINITY to any Comparable objects, which are in practice similar to built-in beginless/endless Ranges.
This defines a subclass of Range, Rangesmaller which has a feature to exclude the begin end. This class is superceded by the range_extd package for Ruby 2.0 and above. See https://rubygems.org/gems/range_extd
Rangeary is a sub-class of Array and represents any 1-dimensional multiple-range, for example, (x<4 and 7<x<=9) or (x<="c" and "f"<=x), where the infinities can be abstract like nil or be defined by the user. All the standard logical operations, including negation, conjunction and disjunction, are supported and can be used with conventional Ruby-style operators. Each range is represented as RangeExtd class (Extended Range), which is a sub-class of Range and supports exclude-begin and open-ended (to Infinity) ranges, and is downloadable from https://rubygems.org/gems/range_extd