github.com/graybobo/golang.org-package-offline-cache@v0.0.0-20200626051047-6608995c132f/x/text/unicode/bidi/gen_trieval.go (about) 1 // Copyright 2015 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 // +build ignore 6 7 package main 8 9 type class int 10 11 const ( 12 _L class = iota // LeftToRight 13 _R // RightToLeft 14 _EN // EuropeanNumber 15 _ES // EuropeanSeparator 16 _ET // EuropeanTerminator 17 _AN // ArabicNumber 18 _CS // CommonSeparator 19 _B // ParagraphSeparator 20 _S // SegmentSeparator 21 _WS // WhiteSpace 22 _ON // OtherNeutral 23 _BN // BoundaryNeutral 24 _NSM // NonspacingMark 25 _AL // ArabicLetter 26 classControl // Control LRO - PDI 27 28 numClass 29 30 _LRO // LeftToRightOverride 31 _RLO // RightToLeftOverride 32 _LRE // LeftToRightEmbedding 33 _RLE // RightToLeftEmbedding 34 _PDF // PopDirectionalFormat 35 _LRI // LeftToRightIsolate 36 _RLI // RightToLeftIsolate 37 _FSI // FirstStrongIsolate 38 _PDI // PopDirectionalIsolate 39 ) 40 41 var controlToClass = map[rune]class{ 42 0x202D: _LRO, // LeftToRightOverride, 43 0x202E: _RLO, // RightToLeftOverride, 44 0x202A: _LRE, // LeftToRightEmbedding, 45 0x202B: _RLE, // RightToLeftEmbedding, 46 0x202C: _PDF, // PopDirectionalFormat, 47 0x2066: _LRI, // LeftToRightIsolate, 48 0x2067: _RLI, // RightToLeftIsolate, 49 0x2068: _FSI, // FirstStrongIsolate, 50 0x2069: _PDI, // PopDirectionalIsolate, 51 } 52 53 // A trie entry has the following bits: 54 // 7..5 XOR mask for brackets 55 // 4 1: Bracket open, 0: Bracket close 56 // 3..0 class type 57 type entry uint8 58 59 const ( 60 openMask = 0x10 61 xorMaskShift = 5 62 ) 63 64 func (e entry) isBracket() bool { return e&0xF0 != 0 } 65 func (e entry) isOpen() bool { return e&openMask != 0 } 66 func (e entry) reverseBracket(r rune) rune { return xorMasks[e>>xorMaskShift] ^ r } 67 func (e entry) class(r rune) class { 68 c := class(e & 0x0F) 69 if c == classControl { 70 return controlToClass[r] 71 } 72 return c 73 }