Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.
 
 
 

49 Zeilen
1.0 KiB

  1. // Copyright 2016 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. //go:generate go run gen.go
  5. // Package runenames provides rune names from the Unicode Character Database.
  6. // For example, the name for '\u0100' is "LATIN CAPITAL LETTER A WITH MACRON".
  7. //
  8. // See https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
  9. package runenames
  10. import (
  11. "sort"
  12. )
  13. // Name returns the name for r.
  14. func Name(r rune) string {
  15. i := sort.Search(len(entries), func(j int) bool {
  16. return entries[j].startRune() > r
  17. })
  18. if i == 0 {
  19. return ""
  20. }
  21. e := entries[i-1]
  22. offset := int(r - e.startRune())
  23. if offset >= e.numRunes() {
  24. return ""
  25. }
  26. if e.direct() {
  27. o := e.index()
  28. n := e.len()
  29. return directData[o : o+n]
  30. }
  31. start := int(index[e.index()+offset])
  32. end := int(index[e.index()+offset+1])
  33. base1 := e.base() << 16
  34. base2 := base1
  35. if start > end {
  36. base2 += 1 << 16
  37. }
  38. return singleData[start+base1 : end+base2]
  39. }
  40. func (e entry) len() int { return e.base() }