src/Pure/General/long_name.scala
author wenzelm
Mon, 25 Mar 2019 16:45:08 +0100
changeset 69980 f2e3adfd916f
parent 66923 914935f8a462
child 75393 87ebf5a50283
permissions -rw-r--r--
tuned signature;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56800
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/General/long_name.scala
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     3
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     4
Long names.
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     5
*/
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     6
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     7
package isabelle
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     8
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
     9
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    10
object Long_Name
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    11
{
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    12
  val separator = "."
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    13
  val separator_char = '.'
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    14
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    15
  def is_qualified(name: String): Boolean = name.contains(separator_char)
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    16
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    17
  def implode(names: List[String]): String = names.mkString(separator)
66923
wenzelm
parents: 65440
diff changeset
    18
  def explode(name: String): List[String] = space_explode(separator_char, name)
56800
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    19
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    20
  def qualify(qual: String, name: String): String =
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    21
    if (qual == "" || name == "") name
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    22
    else qual + separator + name
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    23
65440
fd147f56d9be more operations;
wenzelm
parents: 65358
diff changeset
    24
  def qualifier(name: String): String =
fd147f56d9be more operations;
wenzelm
parents: 65358
diff changeset
    25
    if (name == "") ""
fd147f56d9be more operations;
wenzelm
parents: 65358
diff changeset
    26
    else implode(explode(name).dropRight(1))
fd147f56d9be more operations;
wenzelm
parents: 65358
diff changeset
    27
56800
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    28
  def base_name(name: String): String =
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    29
    if (name == "") ""
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    30
    else explode(name).last
b904ea8edd73 support for long names in Scala;
wenzelm
parents:
diff changeset
    31
}