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//go:build ignore 6// +build ignore 7 8package main 9 10// Class is the Unicode BiDi class. Each rune has a single class. 11type Class uint 12 13const ( 14 L Class = iota // LeftToRight 15 R // RightToLeft 16 EN // EuropeanNumber 17 ES // EuropeanSeparator 18 ET // EuropeanTerminator 19 AN // ArabicNumber 20 CS // CommonSeparator 21 B // ParagraphSeparator 22 S // SegmentSeparator 23 WS // WhiteSpace 24 ON // OtherNeutral 25 BN // BoundaryNeutral 26 NSM // NonspacingMark 27 AL // ArabicLetter 28 Control // Control LRO - PDI 29 30 numClass 31 32 LRO // LeftToRightOverride 33 RLO // RightToLeftOverride 34 LRE // LeftToRightEmbedding 35 RLE // RightToLeftEmbedding 36 PDF // PopDirectionalFormat 37 LRI // LeftToRightIsolate 38 RLI // RightToLeftIsolate 39 FSI // FirstStrongIsolate 40 PDI // PopDirectionalIsolate 41 42 unknownClass = ^Class(0) 43) 44 45var controlToClass = map[rune]Class{ 46 0x202D: LRO, // LeftToRightOverride, 47 0x202E: RLO, // RightToLeftOverride, 48 0x202A: LRE, // LeftToRightEmbedding, 49 0x202B: RLE, // RightToLeftEmbedding, 50 0x202C: PDF, // PopDirectionalFormat, 51 0x2066: LRI, // LeftToRightIsolate, 52 0x2067: RLI, // RightToLeftIsolate, 53 0x2068: FSI, // FirstStrongIsolate, 54 0x2069: PDI, // PopDirectionalIsolate, 55} 56 57// A trie entry has the following bits: 58// 7..5 XOR mask for brackets 59// 4 1: Bracket open, 0: Bracket close 60// 3..0 Class type 61 62const ( 63 openMask = 0x10 64 xorMaskShift = 5 65) 66