+++ /dev/null
-// Copyright 2016 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-//go:generate go run gen.go gen_bits.go
-
-// Package runenames provides rune names from the Unicode Character Database.
-// For example, the name for '\u0100' is "LATIN CAPITAL LETTER A WITH MACRON".
-//
-// See http://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt
-package runenames
-
-import (
- "sort"
-)
-
-// Name returns the name for r.
-func Name(r rune) string {
- i := sort.Search(len(table0), func(j int) bool {
- e := table0[j]
- rOffset := rune(e >> shiftRuneOffset)
- return r < rOffset
- })
- if i == 0 {
- return ""
- }
-
- e := table0[i-1]
- rOffset := rune(e >> shiftRuneOffset)
- rLength := rune(e>>shiftRuneLength) & maskRuneLength
- if r >= rOffset+rLength {
- return ""
- }
-
- if (e>>shiftDirect)&maskDirect != 0 {
- o := int(e>>shiftDataOffset) & maskDataOffset
- n := int(e>>shiftDataLength) & maskDataLength
- return data[o : o+n]
- }
-
- base := uint32(e>>shiftDataBase) & maskDataBase
- base <<= dataBaseUnit
- j := rune(e>>shiftTable1Offset) & maskTable1Offset
- j += r - rOffset
- d0 := base + uint32(table1[j-1]) // dataOffset
- d1 := base + uint32(table1[j-0]) // dataOffset + dataLength
- return data[d0:d1]
-}