1 // Copyright 2023-present 650 Industries. All rights reserved.
2 
3 import ExpoModulesCore
4 
5 enum Encoding: String, Enumerable {
6   // Equivalents of String.Encoding
7   case ascii
8   case nextstep
9   case japaneseeuc
10   case utf8
11   case isolatin1
12   case symbol
13   case nonlossyascii
14   case shiftjis
15   case isolatin2
16   case unicode
17   case windowscp1251
18   case windowscp1252
19   case windowscp1253
20   case windowscp1254
21   case windowscp1250
22   case iso2022jp
23   case macosroman
24   case utf16
25   case utf16bigendian
26   case utf16littleendian
27   case utf32
28   case utf32bigendian
29   case utf32littleendian
30 
31   // Without equivalents in String.Encoding
32   case base64
33 
toStringEncodingnull34   func toStringEncoding() -> String.Encoding? {
35     switch self {
36     case .ascii:
37       return .ascii
38     case .nextstep:
39       return .nextstep
40     case .japaneseeuc:
41       return .japaneseEUC
42     case .utf8:
43       return .utf8
44     case .isolatin1:
45       return .isoLatin1
46     case .symbol:
47       return .symbol
48     case .nonlossyascii:
49       return .nonLossyASCII
50     case .shiftjis:
51       return .shiftJIS
52     case .isolatin2:
53       return .isoLatin2
54     case .unicode:
55       return .unicode
56     case .windowscp1251:
57       return .windowsCP1251
58     case .windowscp1252:
59       return .windowsCP1252
60     case .windowscp1253:
61       return .windowsCP1253
62     case .windowscp1254:
63       return .windowsCP1254
64     case .windowscp1250:
65       return .windowsCP1250
66     case .iso2022jp:
67       return .iso2022JP
68     case .macosroman:
69       return .macOSRoman
70     case .utf16:
71       return .utf16
72     case .utf16bigendian:
73       return .utf16BigEndian
74     case .utf16littleendian:
75       return .utf16LittleEndian
76     case .utf32:
77       return .utf32
78     case .utf32bigendian:
79       return .utf32BigEndian
80     case .utf32littleendian:
81       return .utf32LittleEndian
82 
83       // Cases that don't have their own equivalent in String.Encoding
84     case .base64:
85       return nil
86     }
87   }
88 }
89