src/Pure/General/word.scala
changeset 78614 4da5cdaa4dcd
parent 78613 60561d28569b
child 80477 d32748570069
equal deleted inserted replaced
78613:60561d28569b 78614:4da5cdaa4dcd
    23   /* case */
    23   /* case */
    24 
    24 
    25   def lowercase(str: String): String = str.toLowerCase(Locale.ROOT)
    25   def lowercase(str: String): String = str.toLowerCase(Locale.ROOT)
    26   def uppercase(str: String): String = str.toUpperCase(Locale.ROOT)
    26   def uppercase(str: String): String = str.toUpperCase(Locale.ROOT)
    27 
    27 
    28   def capitalize(str: String): String =
    28   def capitalized(str: String): String =
    29     if (str.length == 0) str
    29     if (str.length == 0) str
    30     else {
    30     else {
    31       val n = Character.charCount(str.codePointAt(0))
    31       val n = Character.charCount(str.codePointAt(0))
    32       uppercase(str.substring(0, n)) + lowercase(str.substring(n))
    32       uppercase(str.substring(0, n)) + lowercase(str.substring(n))
    33     }
    33     }
    34 
    34 
    35   def perhaps_capitalize(str: String): String =
    35   def perhaps_capitalized(str: String): String =
    36     if (Codepoint.iterator(str).forall(c => Character.isLowerCase(c) || Character.isDigit(c)))
    36     if (Codepoint.iterator(str).forall(c => Character.isLowerCase(c) || Character.isDigit(c)))
    37       capitalize(str)
    37       capitalized(str)
    38     else str
    38     else str
    39 
    39 
    40   object Case {
    40   object Case {
    41     def apply(c: Case, str: String): String =
    41     def apply(c: Case, str: String): String =
    42       c match {
    42       c match {
    43         case Case.lowercase => Word.lowercase(str)
    43         case Case.lowercase => Word.lowercase(str)
    44         case Case.uppercase => Word.uppercase(str)
    44         case Case.uppercase => Word.uppercase(str)
    45         case Case.capitalized => Word.capitalize(str)
    45         case Case.capitalized => Word.capitalized(str)
    46       }
    46       }
    47     def unapply(str: String): Option[Case] =
    47     def unapply(str: String): Option[Case] =
    48       if (str.nonEmpty) {
    48       if (str.nonEmpty) {
    49         if (Codepoint.iterator(str).forall(Character.isLowerCase)) Some(Case.lowercase)
    49         if (Codepoint.iterator(str).forall(Character.isLowerCase)) Some(Case.lowercase)
    50         else if (Codepoint.iterator(str).forall(Character.isUpperCase)) Some(Case.uppercase)
    50         else if (Codepoint.iterator(str).forall(Character.isUpperCase)) Some(Case.uppercase)