Skip to content

Commit 8610e1d

Browse files
committed
GoTranslator: implement all encodings from EncodingList
1 parent 5832a81 commit 8610e1d

File tree

1 file changed

+34
-8
lines changed

1 file changed

+34
-8
lines changed

shared/src/main/scala/io/kaitai/struct/translators/GoTranslator.scala

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -285,15 +285,41 @@ class GoTranslator(out: StringLanguageOutputWriter, provider: TypeProvider, impo
285285
val IMPORT_CHARMAP = "golang.org/x/text/encoding/charmap"
286286

287287
val ENCODINGS = Map(
288-
"IBM437" -> ("charmap.CodePage437", IMPORT_CHARMAP),
289-
"ISO-8859-1" -> ("charmap.ISO8859_1", IMPORT_CHARMAP),
290-
"ISO-8859-2" -> ("charmap.ISO8859_2", IMPORT_CHARMAP),
291-
"ISO-8859-3" -> ("charmap.ISO8859_3", IMPORT_CHARMAP),
292-
"ISO-8859-4" -> ("charmap.ISO8859_4", IMPORT_CHARMAP),
293-
"SJIS" -> ("japanese.ShiftJIS", "golang.org/x/text/encoding/japanese"),
294-
"BIG5" -> ("traditionalchinese.Big5", "golang.org/x/text/encoding/traditionalchinese"),
288+
"UTF-16BE" -> ("unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM)", "golang.org/x/text/encoding/unicode"),
295289
"UTF-16LE" -> ("unicode.UTF16(unicode.LittleEndian, unicode.IgnoreBOM)", "golang.org/x/text/encoding/unicode"),
296-
"UTF-16BE" -> ("unicode.UTF16(unicode.BigEndian, unicode.IgnoreBOM)", "golang.org/x/text/encoding/unicode")
290+
"UTF-32BE" -> ("utf32.UTF32(utf32.BigEndian, utf32.IgnoreBOM)", "golang.org/x/text/encoding/unicode/utf32"),
291+
"UTF-32LE" -> ("utf32.UTF32(utf32.LittleEndian, utf32.IgnoreBOM)", "golang.org/x/text/encoding/unicode/utf32"),
292+
"ISO-8859-1" -> ("charmap.ISO8859_1", IMPORT_CHARMAP),
293+
"ISO-8859-2" -> ("charmap.ISO8859_2", IMPORT_CHARMAP),
294+
"ISO-8859-3" -> ("charmap.ISO8859_3", IMPORT_CHARMAP),
295+
"ISO-8859-4" -> ("charmap.ISO8859_4", IMPORT_CHARMAP),
296+
"ISO-8859-5" -> ("charmap.ISO8859_5", IMPORT_CHARMAP),
297+
"ISO-8859-6" -> ("charmap.ISO8859_6", IMPORT_CHARMAP),
298+
"ISO-8859-7" -> ("charmap.ISO8859_7", IMPORT_CHARMAP),
299+
"ISO-8859-8" -> ("charmap.ISO8859_8", IMPORT_CHARMAP),
300+
"ISO-8859-9" -> ("charmap.ISO8859_9", IMPORT_CHARMAP),
301+
"ISO-8859-10" -> ("charmap.ISO8859_10", IMPORT_CHARMAP),
302+
// The same note as in https://github.com/kaitai-io/kaitai_struct_cpp_stl_runtime/blob/07ff9cf91e8bdf3515c0efdda0a879c0021b5edb/kaitai/kaitaistream.cpp#L918-L922
303+
// applies here
304+
"ISO-8859-11" -> ("charmap.Windows874", IMPORT_CHARMAP),
305+
"ISO-8859-13" -> ("charmap.ISO8859_13", IMPORT_CHARMAP),
306+
"ISO-8859-14" -> ("charmap.ISO8859_14", IMPORT_CHARMAP),
307+
"ISO-8859-15" -> ("charmap.ISO8859_15", IMPORT_CHARMAP),
308+
"ISO-8859-16" -> ("charmap.ISO8859_16", IMPORT_CHARMAP),
309+
"windows-1250" -> ("charmap.Windows1250", IMPORT_CHARMAP),
310+
"windows-1251" -> ("charmap.Windows1251", IMPORT_CHARMAP),
311+
"windows-1252" -> ("charmap.Windows1252", IMPORT_CHARMAP),
312+
"windows-1253" -> ("charmap.Windows1253", IMPORT_CHARMAP),
313+
"windows-1254" -> ("charmap.Windows1254", IMPORT_CHARMAP),
314+
"windows-1255" -> ("charmap.Windows1255", IMPORT_CHARMAP),
315+
"windows-1256" -> ("charmap.Windows1256", IMPORT_CHARMAP),
316+
"windows-1257" -> ("charmap.Windows1257", IMPORT_CHARMAP),
317+
"windows-1258" -> ("charmap.Windows1258", IMPORT_CHARMAP),
318+
"IBM437" -> ("charmap.CodePage437", IMPORT_CHARMAP),
319+
"IBM866" -> ("charmap.CodePage866", IMPORT_CHARMAP),
320+
"Shift_JIS" -> ("japanese.ShiftJIS", "golang.org/x/text/encoding/japanese"),
321+
"Big5" -> ("traditionalchinese.Big5", "golang.org/x/text/encoding/traditionalchinese"),
322+
"EUC-KR" -> ("korean.EUCKR", "golang.org/x/text/encoding/korean"),
297323
)
298324

299325
override def bytesToStr(value: Ast.expr, encoding: String): TranslatorResult =

0 commit comments

Comments
 (0)