summaryrefslogtreecommitdiff
path: root/vendor/github.com/gosimple/unidecode/decode.go
diff options
context:
space:
mode:
authorMitja Felicijan <mitja.felicijan@gmail.com>2024-10-25 00:47:47 +0200
committerMitja Felicijan <mitja.felicijan@gmail.com>2024-10-25 00:47:47 +0200
commitc6cc0108ca7738023b45e0eeac0fa2390532dd93 (patch)
tree36890e6cd3091bbab8efbe686cc56f467f645bfd /vendor/github.com/gosimple/unidecode/decode.go
parent0130404a1dc663d4aa68d780c9bcb23a4243e68d (diff)
downloadjbmafp-master.tar.gz
Added vendor lock on depsHEADmaster
Diffstat (limited to 'vendor/github.com/gosimple/unidecode/decode.go')
-rw-r--r--vendor/github.com/gosimple/unidecode/decode.go44
1 files changed, 44 insertions, 0 deletions
diff --git a/vendor/github.com/gosimple/unidecode/decode.go b/vendor/github.com/gosimple/unidecode/decode.go
new file mode 100644
index 0000000..f99e0bb
--- /dev/null
+++ b/vendor/github.com/gosimple/unidecode/decode.go
@@ -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))
+ }
+}