From 66a7a7a7c133da4d02815f77977b213f294c5dd4 Mon Sep 17 00:00:00 2001 From: Stewart Stewart Date: Mon, 10 Oct 2016 17:49:30 -0400 Subject: move implicits into companion objects --- src/main/scala/com/drivergrp/core/core.scala | 10 ++++++---- src/main/scala/com/drivergrp/core/time.scala | 12 ++++++++---- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/src/main/scala/com/drivergrp/core/core.scala b/src/main/scala/com/drivergrp/core/core.scala index 158447f..a82bcc8 100644 --- a/src/main/scala/com/drivergrp/core/core.scala +++ b/src/main/scala/com/drivergrp/core/core.scala @@ -25,18 +25,20 @@ package object core { type Id[+Tag] = Long @@ Tag object Id { + implicit def idEqual[T]: Equal[Id[T]] = Equal.equal[Id[T]](_ == _) + implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by(i => i: Long) + def apply[Tag](value: Long) = value.asInstanceOf[Id[Tag]] } - implicit def idEqual[T]: Equal[Id[T]] = Equal.equal[Id[T]](_ == _) - implicit def idOrdering[T]: Ordering[Id[T]] = Ordering.by(i => i: Long) type Name[+Tag] = String @@ Tag object Name { + implicit def nameEqual[T]: Equal[Name[T]] = Equal.equal[Name[T]](_ == _) + implicit def nameOrdering[T]: Ordering[Name[T]] = Ordering.by(n => n: String) + def apply[Tag](value: String) = value.asInstanceOf[Name[Tag]] } - implicit def nameEqual[T]: Equal[Name[T]] = Equal.equal[Name[T]](_ == _) - implicit def nameOrdering[T]: Ordering[Name[T]] = Ordering.by(n => n: String) object revision { final case class Revision[T](id: String) diff --git a/src/main/scala/com/drivergrp/core/time.scala b/src/main/scala/com/drivergrp/core/time.scala index 9bafb00..e04343b 100644 --- a/src/main/scala/com/drivergrp/core/time.scala +++ b/src/main/scala/com/drivergrp/core/time.scala @@ -21,19 +21,23 @@ object time { final case class Time(millis: Long) extends AnyVal { - def isBefore(anotherTime: Time): Boolean = millis < anotherTime.millis + def isBefore(anotherTime: Time): Boolean = implicitly[Ordering[Time]].lt(this, anotherTime) - def isAfter(anotherTime: Time): Boolean = millis > anotherTime.millis + def isAfter(anotherTime: Time): Boolean = implicitly[Ordering[Time]].gt(this, anotherTime) def advanceBy(duration: Duration): Time = Time(millis + duration.toMillis) } + object Time { + + implicit def timeOrdering: Ordering[Time] = Ordering.by(_.millis) + } + + final case class TimeRange(start: Time, end: Time) { def duration: Duration = FiniteDuration(end.millis - start.millis, MILLISECONDS) } - implicit def timeOrdering: Ordering[Time] = Ordering.by(_.millis) - def startOfMonth(time: Time) = { Time(make(new GregorianCalendar()) { cal => cal.setTime(new Date(time.millis)) -- cgit v1.2.3