Source File
transform.go
Belonging Package
golang.org/x/text/width
package width
import (
)
type foldTransform struct {
transform.NopResetter
}
func (foldTransform) ( []byte, bool) ( int, error) {
for < len() {
for ++; < len() && [] < utf8.RuneSelf; ++ {
}
continue
}
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
= transform.ErrShortSrc
} else {
= len()
}
break
}
if elem()&tagNeedsFold != 0 {
= transform.ErrEndOfSpan
break
}
+=
}
return ,
}
func (foldTransform) (, []byte, bool) (, int, error) {
for < len() {
, := , len()
if := len() - ; < - {
= +
}
for ++; < && [] < utf8.RuneSelf; ++ {
}
:= copy([:], [:])
if += ; == len() {
= +
if == len() {
return , , nil
}
if [] < utf8.RuneSelf {
return , , transform.ErrShortDst
}
}
continue
}
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
return , , transform.ErrShortSrc
}
= 1 // gobble 1 byte
}
if elem()&tagNeedsFold == 0 {
if != copy([:], [:+]) {
return , , transform.ErrShortDst
}
+=
} else {
:= inverseData[byte()]
if len()- < int([0]) {
return , , transform.ErrShortDst
}
:= 1
for := int([0]); < ; ++ {
[] = []
++
}
[] = [] ^ [+-1]
++
}
+=
}
return , , nil
}
type narrowTransform struct {
transform.NopResetter
}
func (narrowTransform) ( []byte, bool) ( int, error) {
for < len() {
for ++; < len() && [] < utf8.RuneSelf; ++ {
}
continue
}
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
= transform.ErrShortSrc
} else {
= len()
}
break
}
if := elem().kind(); byte() == 0 || != EastAsianFullwidth && != EastAsianWide && != EastAsianAmbiguous {
} else {
= transform.ErrEndOfSpan
break
}
+=
}
return ,
}
func (narrowTransform) (, []byte, bool) (, int, error) {
for < len() {
, := , len()
if := len() - ; < - {
= +
}
for ++; < && [] < utf8.RuneSelf; ++ {
}
:= copy([:], [:])
if += ; == len() {
= +
if == len() {
return , , nil
}
if [] < utf8.RuneSelf {
return , , transform.ErrShortDst
}
}
continue
}
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
return , , transform.ErrShortSrc
}
= 1 // gobble 1 byte
}
if := elem().kind(); byte() == 0 || != EastAsianFullwidth && != EastAsianWide && != EastAsianAmbiguous {
if != copy([:], [:+]) {
return , , transform.ErrShortDst
}
+=
} else {
:= inverseData[byte()]
if len()- < int([0]) {
return , , transform.ErrShortDst
}
:= 1
for := int([0]); < ; ++ {
[] = []
++
}
[] = [] ^ [+-1]
++
}
+=
}
return , , nil
}
type wideTransform struct {
transform.NopResetter
}
func (wideTransform) ( []byte, bool) ( int, error) {
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
= transform.ErrShortSrc
} else {
= len()
}
break
}
if := elem().kind(); byte() == 0 || != EastAsianHalfwidth && != EastAsianNarrow {
} else {
= transform.ErrEndOfSpan
break
}
+=
}
return ,
}
func (wideTransform) (, []byte, bool) (, int, error) {
, := trie.lookup([:])
if == 0 { // incomplete UTF-8 encoding
if ! {
return , , transform.ErrShortSrc
}
= 1 // gobble 1 byte
}
if := elem().kind(); byte() == 0 || != EastAsianHalfwidth && != EastAsianNarrow {
if != copy([:], [:+]) {
return , , transform.ErrShortDst
}
+=
} else {
:= inverseData[byte()]
if len()- < int([0]) {
return , , transform.ErrShortDst
}
:= 1
for := int([0]); < ; ++ {
[] = []
++
}
[] = [] ^ [+-1]
++
}
+=
}
return , , nil
![]() |
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. |