Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package o1.time
- class Interval (val start: Moment, val end: Moment) {
- def length: Int = start.distance(end)
- override def toString = {
- if(length == 0) "" + start
- else if(length <= 50) "" + start + ("-" * length) + end
- else "" + start + "..." + end
- }
- def isLaterThan(another: Moment): Boolean = {
- start.isLaterThan(another)
- }
- def isLaterThan(another: Interval) = {
- start.isLaterThan(another.end)
- }
- def contains(another: Interval): Boolean = {
- !this.start.isLaterThan(another.start) && !another.end.isLaterThan(this.end)
- }
- def contains(another: Moment): Boolean = {
- !start.isLaterThan(another) && !another.isLaterThan(end)
- }
- def overlaps(another: Interval): Boolean = {
- !this.start.isLaterThan(another.end) && !another.start.isLaterThan(this.end)
- }
- def union(another: Interval): Interval = {
- new Interval(if (this.start.isLaterThan(another.start)) another.start else this.start, if(this.end.isLaterThan(another.end)) this.end else another.end)
- }
- def intersection(another: Interval): Option[Interval] = {
- if(this.overlaps(another)) Some( new Interval(this.start.later(another.start), this.end.earlier(another.end)) )
- else None
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement