sealed abstract class Status
object Status {
- case object DoingFine extends Status { override def toString() = "順調" }
- case object Lagging extends Status { override def toString() = "遅延" }
- case object DeadlineChanged extends Status { override def toString() = "期限変更" }
- case object Completed extends Status { override def toString() = "完了" }
+ case object DoingFine extends Status { override def toString() = "順調"}
+ case object Lagging extends Status { override def toString() = "遅延"}
+ case object Completed extends Status { override def toString() = "完了"}
}
implicit val CalendarFromField = new FromField[Calendar] {
implicit val StatusFromField = new FromField[Status] {
def parseField(f: Field): Parser[Status] = f.value match {
- case "順調" => (Status.DoingFine: Status).point[Parser]
- case "遅延" => (Status.Lagging: Status).point[Parser]
- case "期限変更" => (Status.DeadlineChanged: Status).point[Parser]
- case "完了" => (Status.Completed: Status).point[Parser]
+ case "順調" => (Status.DoingFine: Status).point[Parser]
+ case "遅延" => (Status.Lagging: Status).point[Parser]
+ case "完了" => (Status.Completed: Status).point[Parser]
case _ =>
("invalid status: " + f).raiseError[Status]
}
def parseRecord(r: Record): Parser[Task] =
for {
date <- r.lookup[Calendar ]('報告日)
- ticketID <- r.lookup[Option[Int] ]('チケットID)
+ ticketID <- r.lookup[Option[Int] ]('チケットID, "")
title <- r.lookup[String ]('作業名)
expectedCompletionDate <- r.lookup[Calendar ]('作業完了予定年月日)
- deadline <- r.lookup[Option[Calendar]]('タスク期限)
+ deadline <- r.lookup[Option[Calendar]]('タスク期限, "")
status <- r.lookup[Status ]('状態)
- description <- r.lookup[Option[String] ]('説明).handleError(_ => None.point[Parser])
+ description <- r.lookup[Option[String] ]('説明, "")
}
yield Task(date, ticketID, title, expectedCompletionDate,
deadline, status, description)