aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStewart Stewart <stewinsalot@gmail.com>2017-03-16 16:22:06 -0400
committerStewart Stewart <stewinsalot@gmail.com>2017-03-16 16:22:06 -0400
commit59815982ac0c0998573aae3a82f038b34f3dfa75 (patch)
treea12459a25b0f48b28ee87dc1398aee9e24cb674f
parentdf06c48f2d6e9f627f57656a60790d8297510b07 (diff)
downloaddriver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.tar.gz
driver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.tar.bz2
driver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.zip
add Year and Day type tags
-rw-r--r--src/main/scala/xyz/driver/core/date.scala15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/scala/xyz/driver/core/date.scala b/src/main/scala/xyz/driver/core/date.scala
index d3fd8a7..e58be9a 100644
--- a/src/main/scala/xyz/driver/core/date.scala
+++ b/src/main/scala/xyz/driver/core/date.scala
@@ -9,10 +9,17 @@ import scalaz.syntax.equal._
object date {
+ type Day = Int @@ Day.type
+
object Day {
+ def apply(value: Int): Day = {
+ require(0 to 31 contains value, "Day must be in range 0 <= value <= 11")
+ value.asInstanceOf[Day]
+ }
+
def unapply(dayString: String): Option[Int] = {
require(dayString.length === 2, s"ISO 8601 day string, DD, must have length 2: $dayString")
- Try(dayString.toInt).toOption
+ Try(dayString.toInt).toOption.map(apply)
}
}
@@ -42,10 +49,14 @@ object date {
}
}
+ type Year = Int @@ Year.type
+
object Year {
+ def apply(value: Int): Year = value.asInstanceOf[Year]
+
def unapply(yearString: String): Option[Int] = {
require(yearString.length === 4, s"ISO 8601 year string, YYYY, must have length 4: $yearString")
- Try(yearString.toInt).toOption
+ Try(yearString.toInt).toOption.map(apply)
}
}