src/Pure/General/json.scala
changeset 69458 5655af3ea5bd
parent 68943 e564605d4cac
child 71298 93b097726667
equal deleted inserted replaced
69457:bea49e443909 69458:5655af3ea5bd
   242 
   242 
   243   object Value
   243   object Value
   244   {
   244   {
   245     object UUID
   245     object UUID
   246     {
   246     {
   247       def unapply(json: T): Option[java.util.UUID] =
   247       def unapply(json: T): Option[isabelle.UUID.T] =
   248         json match {
   248         json match {
   249           case x: java.lang.String =>
   249           case x: java.lang.String => isabelle.UUID.unapply(x)
   250             try { Some(java.util.UUID.fromString(x)) }
       
   251             catch { case _: IllegalArgumentException => None }
       
   252           case _ => None
   250           case _ => None
   253         }
   251         }
   254     }
   252     }
   255 
   253 
   256     object String {
   254     object String {
   347     value(obj, name) match {
   345     value(obj, name) match {
   348       case None => Some(default)
   346       case None => Some(default)
   349       case Some(json) => unapply(json)
   347       case Some(json) => unapply(json)
   350     }
   348     }
   351 
   349 
   352   def uuid(obj: T, name: String): Option[UUID] =
   350   def uuid(obj: T, name: String): Option[UUID.T] =
   353     value(obj, name, Value.UUID.unapply)
   351     value(obj, name, Value.UUID.unapply)
   354 
   352 
   355   def string(obj: T, name: String): Option[String] =
   353   def string(obj: T, name: String): Option[String] =
   356     value(obj, name, Value.String.unapply)
   354     value(obj, name, Value.String.unapply)
   357   def string_default(obj: T, name: String, default: => String = ""): Option[String] =
   355   def string_default(obj: T, name: String, default: => String = ""): Option[String] =