Sha256: 26018dfc3c3d8c96de97d95630e7de99caba0d7f52e46464b4ecd229e1e3d6cd
Contents?: true
Size: 1.18 KB
Versions: 7
Compression:
Stored size: 1.18 KB
Contents
# frozen_string_literal: true module MetalArchives ## # Range which can start and/or end with +nil+ # class Range include Comparable ## # Begin- and endpoint of range # attr_accessor :begin, :end ## # Create a new range # # [+_begin+] # Start of range # # Default: +nil+ # # [+_end+] # End of range # # Default: +nil+ # def initialize(_begin = nil, _end = nil) @begin = _begin @end = _end end ## # Whether start of range is present # def begin? !!@begin end ## # Whether end of range is present # def end? !!@end end ## # Comparison operator # def <=>(other) comp_begin = self.begin <=> other.begin comp_end = self.end <=> other.end # Return nil if begin or end is uncomparable return nil if comp_begin.nil? || comp_end.nil? # Compare end if begin is equal return comp_end if comp_begin.zero? # Compare begin if end is equal return comp_begin if comp_begin.zero? # Compare actual range (self.end - self.begin) <=> (other.end - other.begin) end end end
Version data entries
7 entries across 7 versions & 1 rubygems