| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package models
- sealed trait Measure {
- def productPrefix: String
- def name: String = this.productPrefix.split("\\.").last
- // def primaryUnit: Uni
- }
- object Measure {
- import play.api.libs.json._
- implicit val measureFormat = new Format[Measure] {
- def writes(m: Measure): JsValue = Json.toJson(m.name.toLowerCase)
- def reads(jsValue: JsValue): JsResult[Measure] =
- jsValue.validate[String] match {
- case s: JsSuccess[String] => s.get match {
- case "mass" => JsSuccess(Mass)
- case "volume" => JsSuccess(Volume)
- case "number" => JsSuccess(Number)
- }
- case e: JsError => e
- }
- }
- }
- case object Mass extends Measure
- // {
- // val primaryUnit = Gram
- // }
- case object Volume extends Measure
- // {
- // val primaryUnit = Liter
- // }
- case object Number extends Measure
- // {
- // val primaryUnit = Count
- // }
|