src/Pure/General/word.scala
author wenzelm
Wed, 16 Apr 2014 09:38:40 +0200
changeset 56599 c4424d8c890f
child 56600 628e039cc34d
permissions -rw-r--r--
tuned signature -- separate module Word;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
56599
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     1
/*  Title:      Pure/General/word.scala
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     2
    Module:     PIDE
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     3
    Author:     Makarius
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     4
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     5
Support for plain text words.
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     6
*/
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     7
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     8
package isabelle
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
     9
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    10
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    11
import java.util.Locale
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    12
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    13
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    14
object Word
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    15
{
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    16
  def lowercase(str: String): String = str.toLowerCase(Locale.ROOT)
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    17
  def uppercase(str: String): String = str.toUpperCase(Locale.ROOT)
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    18
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    19
  def capitalize(str: String): String =
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    20
    if (str.length == 0) str
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    21
    else uppercase(str.substring(0, 1)) + str.substring(1)
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    22
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    23
  def is_capitalized(str: String): Boolean =
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    24
    str.length > 0 &&
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    25
    Character.isUpperCase(str(0)) && str.substring(1).forall(Character.isLowerCase(_))
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    26
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    27
  def is_all_caps(str: String): Boolean =
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    28
    str.length > 0 && str.forall(Character.isUpperCase(_))
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    29
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    30
  def plain_words(str: String): String =
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    31
    space_explode('_', str).mkString(" ")
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    32
}
c4424d8c890f tuned signature -- separate module Word;
wenzelm
parents:
diff changeset
    33