mirror of
https://github.com/docker/cli.git
synced 2026-11-06 13:10:41 -04:00
vendor: golang.org/x/text v0.43.0
- secure/bidirule: lazily precompute ASCII table - unicode/bidi: avoid quadratic behavior in Paragraph.Order and Paragraph.Line full diff: https://github.com/golang/text/compare/v0.42.0...v0.43.0 Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
+1
-1
@@ -64,7 +64,7 @@ require (
|
||||
golang.org/x/sync v0.24.0
|
||||
golang.org/x/sys v0.49.0
|
||||
golang.org/x/term v0.47.0
|
||||
golang.org/x/text v0.42.0
|
||||
golang.org/x/text v0.43.0
|
||||
gotest.tools/v3 v3.5.2
|
||||
tags.cncf.io/container-device-interface v1.1.1
|
||||
)
|
||||
|
||||
+2
-2
@@ -210,8 +210,8 @@ golang.org/x/term v0.47.0 h1:cpyOwQkr2Nzxe2p6KnrTG7Ei2wtzjsuSjhpXXepZ/BM=
|
||||
golang.org/x/term v0.47.0/go.mod h1:efAfAuG6RKABvg1ArGebRkvX6LXul14SM67o2e4mUCY=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
|
||||
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
|
||||
golang.org/x/text v0.43.0 h1:1QivrlhwAsnMOcqgOdl9my7s9OyZl8O5/UGUTJVXoWc=
|
||||
golang.org/x/text v0.43.0/go.mod h1:hbSIYA/amXcRXTFSZqh8tWHEoqRvvbKPJ2uz/KU+a+s=
|
||||
golang.org/x/time v0.16.0 h1:vMb6ptszcQMkcwiRTAuNNU50gom6++Q/6gY2hDM6VDE=
|
||||
golang.org/x/time v0.16.0/go.mod h1:rVKOqvZeKvrDKTQiAHJ7wmwP0RzleSphoEA9RcdLA0s=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
|
||||
+7
-1
@@ -10,6 +10,7 @@ package bidirule
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"sync"
|
||||
"unicode/utf8"
|
||||
|
||||
"golang.org/x/text/transform"
|
||||
@@ -246,8 +247,9 @@ func (t *Transformer) Span(src []byte, atEOF bool) (n int, err error) {
|
||||
// Precomputing the ASCII values decreases running time for the ASCII fast path
|
||||
// by about 30%.
|
||||
var asciiTable [128]bidi.Properties
|
||||
var asciiTableOnce sync.Once
|
||||
|
||||
func init() {
|
||||
func initASCIITable() {
|
||||
for i := range asciiTable {
|
||||
p, _ := bidi.LookupRune(rune(i))
|
||||
asciiTable[i] = p
|
||||
@@ -255,6 +257,8 @@ func init() {
|
||||
}
|
||||
|
||||
func (t *Transformer) advance(s []byte) (n int, ok bool) {
|
||||
asciiTableOnce.Do(initASCIITable)
|
||||
|
||||
var e bidi.Properties
|
||||
var sz int
|
||||
for n < len(s) {
|
||||
@@ -297,6 +301,8 @@ func (t *Transformer) advance(s []byte) (n int, ok bool) {
|
||||
}
|
||||
|
||||
func (t *Transformer) advanceString(s string) (n int, ok bool) {
|
||||
asciiTableOnce.Do(initASCIITable)
|
||||
|
||||
var e bidi.Properties
|
||||
var sz int
|
||||
for n < len(s) {
|
||||
|
||||
+47
-60
@@ -208,27 +208,23 @@ func (p *paragraph) determineMatchingIsolates() {
|
||||
p.matchingIsolateInitiator[i] = -1
|
||||
}
|
||||
|
||||
var open []int
|
||||
for i := range p.matchingPDI {
|
||||
p.matchingPDI[i] = -1
|
||||
|
||||
if t := p.resultTypes[i]; t.in(LRI, RLI, FSI) {
|
||||
depthCounter := 1
|
||||
for j := i + 1; j < p.Len(); j++ {
|
||||
if u := p.resultTypes[j]; u.in(LRI, RLI, FSI) {
|
||||
depthCounter++
|
||||
} else if u == PDI {
|
||||
if depthCounter--; depthCounter == 0 {
|
||||
p.matchingPDI[i] = j
|
||||
p.matchingIsolateInitiator[j] = i
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if p.matchingPDI[i] == -1 {
|
||||
p.matchingPDI[i] = p.Len()
|
||||
}
|
||||
switch t := p.resultTypes[i]; {
|
||||
case t.in(LRI, RLI, FSI):
|
||||
open = append(open, i)
|
||||
case t == PDI && len(open) > 0:
|
||||
j := open[len(open)-1]
|
||||
open = open[:len(open)-1]
|
||||
p.matchingPDI[j] = i
|
||||
p.matchingIsolateInitiator[i] = j
|
||||
}
|
||||
}
|
||||
for _, i := range open {
|
||||
p.matchingPDI[i] = p.Len()
|
||||
}
|
||||
}
|
||||
|
||||
// determineParagraphEmbeddingLevel reports the resolved paragraph direction of
|
||||
@@ -496,16 +492,13 @@ func (s *isolatingRunSequence) resolveWeakTypes() {
|
||||
|
||||
// Rule W2.
|
||||
// EN does not change at the start of the run, because sos != AL.
|
||||
lastStrong := unknownClass
|
||||
for i, t := range s.types {
|
||||
if t == EN {
|
||||
for j := i - 1; j >= 0; j-- {
|
||||
if t := s.types[j]; t.in(L, R, AL) {
|
||||
if t == AL {
|
||||
s.types[i] = AN
|
||||
}
|
||||
break
|
||||
}
|
||||
}
|
||||
switch {
|
||||
case t.in(L, R, AL):
|
||||
lastStrong = t
|
||||
case t == EN && lastStrong == AL:
|
||||
s.types[i] = AN
|
||||
}
|
||||
}
|
||||
|
||||
@@ -543,29 +536,30 @@ func (s *isolatingRunSequence) resolveWeakTypes() {
|
||||
}
|
||||
|
||||
// Rule W5.
|
||||
for i, t := range s.types {
|
||||
if t == ET {
|
||||
// locate end of sequence
|
||||
runStart := i
|
||||
runEnd := s.findRunLimit(runStart, ET)
|
||||
|
||||
// check values at ends of sequence
|
||||
t := s.sos
|
||||
if runStart > 0 {
|
||||
t = s.types[runStart-1]
|
||||
}
|
||||
if t != EN {
|
||||
t = s.eos
|
||||
if runEnd < len(s.types) {
|
||||
t = s.types[runEnd]
|
||||
}
|
||||
}
|
||||
if t == EN {
|
||||
setTypes(s.types[runStart:runEnd], EN)
|
||||
}
|
||||
// continue at end of sequence
|
||||
i = runEnd
|
||||
for i := 0; i < len(s.types); i++ {
|
||||
if s.types[i] != ET {
|
||||
continue
|
||||
}
|
||||
// locate end of sequence
|
||||
runStart := i
|
||||
runEnd := s.findRunLimit(runStart, ET)
|
||||
|
||||
// check values at ends of sequence
|
||||
t := s.sos
|
||||
if runStart > 0 {
|
||||
t = s.types[runStart-1]
|
||||
}
|
||||
if t != EN {
|
||||
t = s.eos
|
||||
if runEnd < len(s.types) {
|
||||
t = s.types[runEnd]
|
||||
}
|
||||
}
|
||||
if t == EN {
|
||||
setTypes(s.types[runStart:runEnd], EN)
|
||||
}
|
||||
// continue at end of sequence
|
||||
i = runEnd
|
||||
}
|
||||
|
||||
// Rule W6.
|
||||
@@ -576,20 +570,13 @@ func (s *isolatingRunSequence) resolveWeakTypes() {
|
||||
}
|
||||
|
||||
// Rule W7.
|
||||
prevStrongType := s.sos
|
||||
for i, t := range s.types {
|
||||
if t == EN {
|
||||
// set default if we reach start of run
|
||||
prevStrongType := s.sos
|
||||
for j := i - 1; j >= 0; j-- {
|
||||
t = s.types[j]
|
||||
if t == L || t == R { // AL's have been changed to R
|
||||
prevStrongType = t
|
||||
break
|
||||
}
|
||||
}
|
||||
if prevStrongType == L {
|
||||
s.types[i] = L
|
||||
}
|
||||
switch {
|
||||
case t == L || t == R: // AL's have been changed to R
|
||||
prevStrongType = t
|
||||
case t == EN && prevStrongType == L:
|
||||
s.types[i] = L
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Vendored
+1
-1
@@ -419,7 +419,7 @@ golang.org/x/sys/windows/registry
|
||||
# golang.org/x/term v0.47.0
|
||||
## explicit; go 1.26.0
|
||||
golang.org/x/term
|
||||
# golang.org/x/text v0.42.0
|
||||
# golang.org/x/text v0.43.0
|
||||
## explicit; go 1.26.0
|
||||
golang.org/x/text/feature/plural
|
||||
golang.org/x/text/internal
|
||||
|
||||
Reference in New Issue
Block a user