IB v1.0
This commit is contained in:
44
vendor/github.com/gosimple/unidecode/decode.go
generated
vendored
Normal file
44
vendor/github.com/gosimple/unidecode/decode.go
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
package unidecode
|
||||
|
||||
import (
|
||||
"compress/zlib"
|
||||
"io"
|
||||
"strings"
|
||||
)
|
||||
|
||||
const (
|
||||
dummyLenght = byte(0xff)
|
||||
)
|
||||
|
||||
var (
|
||||
transliterations [65536][]rune
|
||||
transCount = rune(len(transliterations))
|
||||
)
|
||||
|
||||
func decodeTransliterations() {
|
||||
r, err := zlib.NewReader(strings.NewReader(tableData))
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
defer r.Close()
|
||||
b := make([]byte, 0, 13) // 13 = longest transliteration, adjust if needed
|
||||
lenB := b[:1]
|
||||
chr := uint16(0xffff) // char counter, rely on overflow on first pass
|
||||
for {
|
||||
chr++
|
||||
if _, err := io.ReadFull(r, lenB); err != nil {
|
||||
if err == io.EOF {
|
||||
break
|
||||
}
|
||||
panic(err)
|
||||
}
|
||||
if lenB[0] == dummyLenght {
|
||||
continue
|
||||
}
|
||||
b = b[:lenB[0]] // resize, preserving allocation
|
||||
if _, err := io.ReadFull(r, b); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
transliterations[int(chr)] = []rune(string(b))
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user