Module: OpenHAB::CoreExt::Ruby::Range
- Included in:
- Range
- Defined in:
- lib/openhab/core_ext/ruby/range.rb
Overview
Extensions to Range
Instance Method Summary collapse
- 
  
    
      #circular?  ⇒ true, false 
    
    
  
  
  
  
  
  
  
  
  
    Checks if this range is circular. 
- #cover?(object) ⇒ Boolean
- 
  
    
      #each  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    normal Range#each will not yield at all if begin > end. 
Instance Method Details
#circular? ⇒ true, false
Checks if this range is circular
A circular range is one whose data type will repeat if keep you keep calling #succ on it, and whose beginning is after its end.
Used by #cover? to check if the value is between end and begin,
instead of begin and end.
| 54 55 56 57 58 59 60 61 62 63 64 | # File 'lib/openhab/core_ext/ruby/range.rb', line 54 def circular? return false if self.begin.nil? || self.end.nil? return false if self.begin <= self.end case self.begin || self.end when java.time.LocalTime, java.time.MonthDay, java.time.Month true else false end end | 
#cover?(object) ⇒ Boolean
| 8 9 10 11 12 13 14 15 16 | # File 'lib/openhab/core_ext/ruby/range.rb', line 8 def cover?(object) # inverted circular range if circular? return object >= self.begin || object < self.end if exclude_end? return object >= self.begin || object <= self.end end super end | 
#each ⇒ Object
normal Range#each will not yield at all if begin > end
| 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | # File 'lib/openhab/core_ext/ruby/range.rb', line 27 def each return super unless circular? return to_enum(:each) unless block_given? val = self.begin loop do is_end = val == self.end break if is_end && exclude_end? yield val break if is_end val = val.succ end end | 
 
          