github.com/shogo82148/std@v1.22.1-0.20240327122250-4e474527810c/unicode/letter.go (about)

     1  // Copyright 2009 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  // unicodeパッケージは、Unicodeコードポイントのいくつかのプロパティをテストするためのデータと関数を提供します。
     6  package unicode
     7  
     8  const (
     9  	MaxRune         = '\U0010FFFF'
    10  	ReplacementChar = '\uFFFD'
    11  	MaxASCII        = '\u007F'
    12  	MaxLatin1       = '\u00FF'
    13  )
    14  
    15  // RangeTableは、セット内のUnicodeコードポイントを範囲ごとにリストアップして定義します。
    16  // 範囲は2つのスライスにリストされます。16ビット範囲のスライスと32ビット範囲のスライスです。
    17  // 2つのスライスはソートされた順序で且つ重複しないようにする必要があります。
    18  // また、R32には値が0x10000(1<<16)以上のもののみ含まれるべきです。
    19  type RangeTable struct {
    20  	R16         []Range16
    21  	R32         []Range32
    22  	LatinOffset int
    23  }
    24  
    25  // Range16は16ビットのUnicodeコードポイントの範囲を表します。範囲はLoからHiまでの値を含み、指定されたストライドを持ちます。
    26  type Range16 struct {
    27  	Lo     uint16
    28  	Hi     uint16
    29  	Stride uint16
    30  }
    31  
    32  // Range32はUnicodeコードポイントの範囲を表し、16ビットに収まらない値が1つ以上含まれる場合に使用されます。この範囲はLoからHiまでの間(Hiも含む)で、指定されたストライドを持ちます。LoとHiは常に1<<16以上である必要があります。
    33  type Range32 struct {
    34  	Lo     uint32
    35  	Hi     uint32
    36  	Stride uint32
    37  }
    38  
    39  // CaseRangeは、単純な(1つのコードポイントから別のコードポイントへの)大文字小文字変換のためのUnicodeコードポイントの範囲を表します。
    40  // 範囲は、LoからHiまでの範囲で、固定のストライド1で実行されます。デルタは、その文字の異なるケースに到達するためにコードポイントに追加する数値です。デルタは負数になることもあります。ゼロの場合、対応するケースに文字があることを意味します。特別な場合として、交互に対応する大文字と小文字のペアのシーケンスを表すものがあります。これは、固定デルタの
    41  //
    42  // {UpperLower、UpperLower、UpperLower}
    43  //
    44  // と表示されます。
    45  //
    46  // 定数UpperLowerには、通常ありえないデルタ値があります。
    47  type CaseRange struct {
    48  	Lo    uint32
    49  	Hi    uint32
    50  	Delta d
    51  }
    52  
    53  // SpecialCaseはトルコ語などの言語固有の大文字小文字マッピングを表します。
    54  // SpecialCaseのメソッドは、標準のマッピングをカスタマイズするために(オーバーライドすることによって)使用されます。
    55  type SpecialCase []CaseRange
    56  
    57  // CaseMapping 内の CaseRanges のデルタ配列への索引。
    58  const (
    59  	UpperCase = iota
    60  	LowerCase
    61  	TitleCase
    62  	MaxCase
    63  )
    64  
    65  // [CaseRange] のDeltaフィールドがUpperLowerである場合、
    66  // これはCaseRangeが(例えば) [Upper] [Lower] [Upper] [Lower] の形式のシーケンスを表していることを意味します。
    67  const (
    68  	UpperLower = MaxRune + 1
    69  )
    70  
    71  // 指定された範囲テーブル内にルーンが含まれているかどうかを報告します。
    72  func Is(rangeTab *RangeTable, r rune) bool
    73  
    74  // IsUpperはルーンが大文字のアルファベットかどうかを報告します。
    75  func IsUpper(r rune) bool
    76  
    77  // IsLowerは、ルーンが小文字の文字かどうかを報告します。
    78  func IsLower(r rune) bool
    79  
    80  // IsTitleは、与えられたルーンがタイトルケースの文字であるかどうかを報告します。
    81  func IsTitle(r rune) bool
    82  
    83  // Toは、指定されたケース([UpperCase]、[LowerCase]、または[TitleCase])にルーンをマッピングします。
    84  func To(_case int, r rune) rune
    85  
    86  // ToUpperはルーンを大文字にマッピングします。
    87  func ToUpper(r rune) rune
    88  
    89  // ToLowerはルーン文字を小文字にマッピングします。
    90  func ToLower(r rune) rune
    91  
    92  // ToTitleはルーンをタイトルケースにマッピングします。
    93  func ToTitle(r rune) rune
    94  
    95  // ToUpperはルーンを大文字にマッピングしますが、特別なマッピングに優先します。
    96  func (special SpecialCase) ToUpper(r rune) rune
    97  
    98  // ToTitleはルーンをタイトルケースにマッピングし、特別なマッピングを優先します。
    99  func (special SpecialCase) ToTitle(r rune) rune
   100  
   101  // ToLowerはルーンを小文字にマッピングしますが、特別なマッピングに優先します。
   102  func (special SpecialCase) ToLower(r rune) rune
   103  
   104  // SimpleFoldは、Unicodeが定義するシンプルな大文字小文字変換に基づいて、Unicodeコードポイントに相当するコードポイントを反復します。rune自体を含むruneに相当するコードポイントの中で、SimpleFoldは、存在する場合はrよりも大きい最小のruneを返し、存在しない場合は0以上の最小のruneを返します。rが有効なUnicodeコードポイントでない場合、SimpleFold(r)はrを返します。
   105  // 例えば:
   106  //
   107  // SimpleFold('A') = 'a'
   108  // SimpleFold('a') = 'A'
   109  //
   110  // SimpleFold('K') = 'k'
   111  // SimpleFold('k') = '\u212A' (ケルビン記号、K)
   112  // SimpleFold('\u212A') = 'K'
   113  //
   114  // SimpleFold('1') = '1'
   115  //
   116  // SimpleFold(-2) = -2
   117  func SimpleFold(r rune) rune