aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzachdriver <zach@driver.xyz>2018-03-06 17:29:14 -0800
committerGitHub <noreply@github.com>2018-03-06 17:29:14 -0800
commit575872b556eeb403147df9fe96b58236e0402050 (patch)
treedc78790350aaaa98c6c59ee52a73401d74b94f4a
parent8f1a77047e7ec823cf7ae4a7f71919ff66ae3579 (diff)
parenta4dd609bbef58f631f5ceaa1f034deb0ecf12db1 (diff)
downloaddriver-core-575872b556eeb403147df9fe96b58236e0402050.tar.gz
driver-core-575872b556eeb403147df9fe96b58236e0402050.tar.bz2
driver-core-575872b556eeb403147df9fe96b58236e0402050.zip
Merge pull request #135 from drivergroup/zsmith/day-of-weekv1.8.7
Add DayOfWeek type
-rw-r--r--src/main/scala/xyz/driver/core/date.scala16
-rw-r--r--src/main/scala/xyz/driver/core/generators.scala4
-rw-r--r--src/main/scala/xyz/driver/core/json.scala5
3 files changed, 23 insertions, 2 deletions
diff --git a/src/main/scala/xyz/driver/core/date.scala b/src/main/scala/xyz/driver/core/date.scala
index d6f64e4..fe35c91 100644
--- a/src/main/scala/xyz/driver/core/date.scala
+++ b/src/main/scala/xyz/driver/core/date.scala
@@ -5,6 +5,7 @@ import java.util.Calendar
import scala.util.Try
import scalaz.std.anyVal._
+import scalaz.Scalaz.stringInstance
import scalaz.syntax.equal._
/**
@@ -14,6 +15,21 @@ import scalaz.syntax.equal._
*/
object date {
+ sealed trait DayOfWeek
+ object DayOfWeek {
+ case object Monday extends DayOfWeek
+ case object Tuesday extends DayOfWeek
+ case object Wednesday extends DayOfWeek
+ case object Thursday extends DayOfWeek
+ case object Friday extends DayOfWeek
+ case object Saturday extends DayOfWeek
+ case object Sunday extends DayOfWeek
+
+ val All: Set[DayOfWeek] = Set(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday)
+
+ def fromString(day: String): Option[DayOfWeek] = All.find(_.toString === day)
+ }
+
type Day = Int @@ Day.type
object Day {
diff --git a/src/main/scala/xyz/driver/core/generators.scala b/src/main/scala/xyz/driver/core/generators.scala
index e842dd2..e3ff326 100644
--- a/src/main/scala/xyz/driver/core/generators.scala
+++ b/src/main/scala/xyz/driver/core/generators.scala
@@ -4,7 +4,7 @@ import java.math.MathContext
import java.util.UUID
import xyz.driver.core.time.{Time, TimeRange}
-import xyz.driver.core.date.Date
+import xyz.driver.core.date.{Date, DayOfWeek}
import scala.reflect.ClassTag
import scala.util.Random
@@ -80,6 +80,8 @@ object generators {
def nextDate(): Date = nextTime().toDate(java.util.TimeZone.getTimeZone("UTC"))
+ def nextDayOfWeek(): DayOfWeek = oneOf(DayOfWeek.All)
+
def nextBigDecimal(multiplier: Double = 1000000.00, precision: Int = 2): BigDecimal =
BigDecimal(multiplier * nextDouble, new MathContext(precision))
diff --git a/src/main/scala/xyz/driver/core/json.scala b/src/main/scala/xyz/driver/core/json.scala
index e338638..02a35fd 100644
--- a/src/main/scala/xyz/driver/core/json.scala
+++ b/src/main/scala/xyz/driver/core/json.scala
@@ -12,7 +12,7 @@ import akka.http.scaladsl.marshalling.{Marshaller, Marshalling}
import akka.http.scaladsl.unmarshalling.Unmarshaller
import spray.json._
import xyz.driver.core.auth.AuthCredentials
-import xyz.driver.core.date.{Date, Month}
+import xyz.driver.core.date.{Date, DayOfWeek, Month}
import xyz.driver.core.domain.{Email, PhoneNumber}
import xyz.driver.core.time.Time
import eu.timepit.refined.refineV
@@ -80,6 +80,9 @@ object json {
}
}
+ implicit val dayOfWeekFormat: JsonFormat[DayOfWeek] =
+ new EnumJsonFormat[DayOfWeek](DayOfWeek.All.map(w => w.toString -> w)(collection.breakOut): _*)
+
implicit val dateFormat = new RootJsonFormat[Date] {
def write(date: Date) = JsString(date.toString)
def read(value: JsValue): Date = value match {