Source File
bracket.go
Belonging Package
golang.org/x/text/unicode/bidi
package bidi
import (
)
type bracketType byte
const (
bpNone bracketType = iota
bpOpen
bpClose
)
type bracketPairs []bracketPair
func ( bracketPairs) () int { return len() }
func ( bracketPairs) (, int) { [], [] = [], [] }
func ( bracketPairs) (, int) bool { return [].opener < [].opener }
func ( *isolatingRunSequence) {
:= bracketPairer{
sos: .sos,
openers: list.New(),
codesIsolatedRun: .types,
indexes: .indexes,
}
:= L
if .level&1 != 0 {
= R
}
.locateBrackets(.p.pairTypes, .p.pairValues)
.resolveBrackets(, .p.initialTypes)
}
type bracketPairer struct {
sos Class // direction corresponding to start of sequence
pairPositions bracketPairs
codesIsolatedRun []Class // directional bidi codes for an isolated run
indexes []int // array of index values into the original string
}
func ( *bracketPairer) ( []rune, , int) bool {
return [.indexes[]] == [.indexes[]]
}
const maxPairingDepth = 63
for , := range .indexes {
continue
}
switch [] {
if .openers.Len() == maxPairingDepth {
.openers.Init()
return
}
}
}
func ( *bracketPairer) ( int) Class {
func ( *bracketPairer) ( bracketPair, Class) Class {
:= ON
for := .opener + 1; < .closer; ++ {
:= .getStrongTypeN0()
if == ON {
continue
}
if == {
return // type matching embedding direction found
}
=
return
}
func ( *bracketPairer) ( bracketPair) Class {
for := .opener - 1; >= 0; -- {
if := .getStrongTypeN0(); != ON {
return
}
return .sos
}
:= .classifyPairContent(, )
if == ON {
return // case "d" - nothing to do
}
= .classBeforePair()
=
}
.setBracketsToType(, , )
}
func ( *bracketPairer) ( bracketPair, Class, []Class) {
.codesIsolatedRun[.opener] =
.codesIsolatedRun[.closer] =
for := .opener + 1; < .closer; ++ {
:= .indexes[]
if [] != NSM {
break
}
.codesIsolatedRun[] =
}
for := .closer + 1; < len(.indexes); ++ {
:= .indexes[]
if [] != NSM {
break
}
.codesIsolatedRun[] =
}
}
func ( *bracketPairer) ( Class, []Class) {
for , := range .pairPositions {
.assignBracketType(, , )
}
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |