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  |