diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-25 00:47:47 +0200 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2024-10-25 00:47:47 +0200 |
| commit | c6cc0108ca7738023b45e0eeac0fa2390532dd93 (patch) | |
| tree | 36890e6cd3091bbab8efbe686cc56f467f645bfd /vendor/github.com/gosimple/unidecode/decode.go | |
| parent | 0130404a1dc663d4aa68d780c9bcb23a4243e68d (diff) | |
| download | jbmafp-c6cc0108ca7738023b45e0eeac0fa2390532dd93.tar.gz | |
Diffstat (limited to 'vendor/github.com/gosimple/unidecode/decode.go')
| -rw-r--r-- | vendor/github.com/gosimple/unidecode/decode.go | 44 |
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)) + } +} |
