diff options
author | Stewart Stewart <stewinsalot@gmail.com> | 2017-03-16 16:22:06 -0400 |
---|---|---|
committer | Stewart Stewart <stewinsalot@gmail.com> | 2017-03-16 16:22:06 -0400 |
commit | 59815982ac0c0998573aae3a82f038b34f3dfa75 (patch) | |
tree | a12459a25b0f48b28ee87dc1398aee9e24cb674f /src/main/scala/xyz/driver/core/date.scala | |
parent | df06c48f2d6e9f627f57656a60790d8297510b07 (diff) | |
download | driver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.tar.gz driver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.tar.bz2 driver-core-59815982ac0c0998573aae3a82f038b34f3dfa75.zip |
add Year and Day type tags
Diffstat (limited to 'src/main/scala/xyz/driver/core/date.scala')
-rw-r--r-- | src/main/scala/xyz/driver/core/date.scala | 15 |
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) } } |