package org.gerweck.scalafx.util /** A property that can be parsed from a TextField. * * @author Sarah Gerweck */ trait Parseable[A] { val builder: PropertyBuilder[A] type Prop = builder.Prop def toString(a: A): String = a.toString def fromString(s: String): A def makeNew(default: A) = builder.makeNew(default) } object Parseable { private[this] def parseable[A](from: String => A)(implicit build: PropertyBuilder[A]) = new Parseable[A] { val builder = build def fromString(s: String): A = from(s) } implicit val IntParseable = parseable[Int](_.toInt) implicit val LongParseable = parseable[Long](_.toLong) implicit val FloatParseable = parseable[Float](_.toFloat) implicit val DoubleParseable = parseable[Double](_.toDouble) implicit val BooleanParseable = parseable[Boolean](_.toBoolean) }