src/Pure/General/uuid.scala
author wenzelm
Wed, 12 Feb 2025 00:53:15 +0100
changeset 82143 a43e39c52f26
parent 79717 da4e82434985
permissions -rw-r--r--
back to scala-3.3.4: scalac in 3.3.5 is more than 2 times slower;

/*  Title:      Pure/General/uuid.scala
    Author:     Makarius

Universally Unique Identifiers.
*/

package isabelle


object UUID {
  type T = java.util.UUID

  def random(): T = java.util.UUID.randomUUID()
  def random_string(): String = random().toString

  def unapply(s: String): Option[T] =
    try { Some(java.util.UUID.fromString(s)) }
    catch { case _: IllegalArgumentException => None }

  def unapply(body: XML.Body): Option[T] = unapply(XML.content(body))

  def make(s: String): T =
    unapply(s).getOrElse(error("Bad UUID: " + quote(s)))
}