diff options
author | ale <ale@incal.net> | 2018-08-31 08:28:51 +0100 |
---|---|---|
committer | ale <ale@incal.net> | 2018-08-31 08:28:51 +0100 |
commit | b3d419486a87c9193c2fd6c16168f600876e0f73 (patch) | |
tree | 849d1333d4fac8e5654e65a0fdf4b2cb00355ab9 /vendor/golang.org/x/text/unicode/norm/forminfo.go | |
parent | 86a0bd2d15a07662fdae4e24589b08706c2e80b9 (diff) | |
download | crawl-b3d419486a87c9193c2fd6c16168f600876e0f73.tar.gz crawl-b3d419486a87c9193c2fd6c16168f600876e0f73.zip |
Update dependencies
Diffstat (limited to 'vendor/golang.org/x/text/unicode/norm/forminfo.go')
-rw-r--r-- | vendor/golang.org/x/text/unicode/norm/forminfo.go | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/vendor/golang.org/x/text/unicode/norm/forminfo.go b/vendor/golang.org/x/text/unicode/norm/forminfo.go index e67e765..526c703 100644 --- a/vendor/golang.org/x/text/unicode/norm/forminfo.go +++ b/vendor/golang.org/x/text/unicode/norm/forminfo.go @@ -4,6 +4,8 @@ package norm +import "encoding/binary" + // This file contains Form-specific logic and wrappers for data in tables.go. // Rune info is stored in a separate trie per composing form. A composing form @@ -178,6 +180,17 @@ func (p Properties) TrailCCC() uint8 { return ccc[p.tccc] } +func buildRecompMap() { + recompMap = make(map[uint32]rune, len(recompMapPacked)/8) + var buf [8]byte + for i := 0; i < len(recompMapPacked); i += 8 { + copy(buf[:], recompMapPacked[i:i+8]) + key := binary.BigEndian.Uint32(buf[:4]) + val := binary.BigEndian.Uint32(buf[4:]) + recompMap[key] = rune(val) + } +} + // Recomposition // We use 32-bit keys instead of 64-bit for the two codepoint keys. // This clips off the bits of three entries, but we know this will not @@ -186,8 +199,14 @@ func (p Properties) TrailCCC() uint8 { // Note that the recomposition map for NFC and NFKC are identical. // combine returns the combined rune or 0 if it doesn't exist. +// +// The caller is responsible for calling +// recompMapOnce.Do(buildRecompMap) sometime before this is called. func combine(a, b rune) rune { key := uint32(uint16(a))<<16 + uint32(uint16(b)) + if recompMap == nil { + panic("caller error") // see func comment + } return recompMap[key] } |