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