Advertisement
Guest User

Untitled

a guest
Sep 29th, 2014
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scala 1.25 KB | None | 0 0
  1. package o1.time
  2.  
  3. class Interval (val start: Moment, val end: Moment)   {
  4.   def length: Int = start.distance(end)
  5.  
  6.   override def toString = {
  7.     if(length == 0) "" + start
  8.     else if(length <= 50) "" + start +  ("-" * length) + end
  9.     else "" + start + "..." + end
  10.   }
  11.  
  12.   def isLaterThan(another: Moment): Boolean = {
  13.     start.isLaterThan(another)
  14.   }
  15.  
  16.   def isLaterThan(another: Interval) = {
  17.     start.isLaterThan(another.end)
  18.   }
  19.  
  20.   def contains(another: Interval): Boolean = {
  21.     !this.start.isLaterThan(another.start) && !another.end.isLaterThan(this.end)
  22.   }
  23.  
  24.   def contains(another: Moment): Boolean = {
  25.     !start.isLaterThan(another) && !another.isLaterThan(end)
  26.   }
  27.  
  28.   def overlaps(another: Interval): Boolean = {
  29.     !this.start.isLaterThan(another.end) && !another.start.isLaterThan(this.end)
  30.   }
  31.  
  32.   def union(another: Interval): Interval = {
  33.     new Interval(if (this.start.isLaterThan(another.start)) another.start else this.start, if(this.end.isLaterThan(another.end)) this.end else another.end)
  34.   }
  35.  
  36.   def intersection(another: Interval): Option[Interval] = {
  37.     if(this.overlaps(another)) Some( new Interval(this.start.later(another.start), this.end.earlier(another.end)) )
  38.    
  39.     else None
  40.   }  
  41. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement