forked from swiftlang/swift-corelibs-foundation
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathStringEncodings.swift
175 lines (165 loc) · 7.05 KB
/
StringEncodings.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
extension String {
public struct Encoding : RawRepresentable {
public var rawValue: UInt
public init(rawValue: UInt) { self.rawValue = rawValue }
public static let ascii = Encoding(rawValue: 1)
public static let nextstep = Encoding(rawValue: 2)
public static let japaneseEUC = Encoding(rawValue: 3)
public static let utf8 = Encoding(rawValue: 4)
public static let isoLatin1 = Encoding(rawValue: 5)
public static let symbol = Encoding(rawValue: 6)
public static let nonLossyASCII = Encoding(rawValue: 7)
public static let shiftJIS = Encoding(rawValue: 8)
public static let isoLatin2 = Encoding(rawValue: 9)
public static let unicode = Encoding(rawValue: 10)
public static let windowsCP1251 = Encoding(rawValue: 11)
public static let windowsCP1252 = Encoding(rawValue: 12)
public static let windowsCP1253 = Encoding(rawValue: 13)
public static let windowsCP1254 = Encoding(rawValue: 14)
public static let windowsCP1250 = Encoding(rawValue: 15)
public static let iso2022JP = Encoding(rawValue: 21)
public static let macOSRoman = Encoding(rawValue: 30)
public static let utf16 = Encoding.unicode
public static let utf16BigEndian = Encoding(rawValue: 0x90000100)
public static let utf16LittleEndian = Encoding(rawValue: 0x94000100)
public static let utf32 = Encoding(rawValue: 0x8c000100)
public static let utf32BigEndian = Encoding(rawValue: 0x98000100)
public static let utf32LittleEndian = Encoding(rawValue: 0x9c000100)
// Map selected IANA character set names to encodings, see
// https://www.iana.org/assignments/character-sets/character-sets.xhtml
internal init?(charSet: String) {
let encoding: Encoding?
switch charSet.lowercased() {
case "us-ascii": encoding = .ascii
case "utf-8": encoding = .utf8
case "utf-16": encoding = .utf16
case "utf-16be": encoding = .utf16BigEndian
case "utf-16le": encoding = .utf16LittleEndian
case "utf-32": encoding = .utf32
case "utf-32be": encoding = .utf32BigEndian
case "utf-32le": encoding = .utf32LittleEndian
case "iso-8859-1": encoding = .isoLatin1
case "iso-8859-2": encoding = .isoLatin2
case "iso-2022-jp": encoding = .iso2022JP
case "windows-1250": encoding = .windowsCP1250
case "windows-1251": encoding = .windowsCP1251
case "windows-1252": encoding = .windowsCP1252
case "windows-1253": encoding = .windowsCP1253
case "windows-1254": encoding = .windowsCP1254
case "shift_jis": encoding = .shiftJIS
case "euc-jp": encoding = .japaneseEUC
case "macintosh": encoding = .macOSRoman
default: encoding = nil
}
guard let value = encoding?.rawValue else {
return nil
}
rawValue = value
}
}
public typealias EncodingConversionOptions = NSString.EncodingConversionOptions
public typealias EnumerationOptions = NSString.EnumerationOptions
public typealias CompareOptions = NSString.CompareOptions
}
extension String.Encoding : Hashable {
// ==, hash(into:) supplied by RawRepresentable
}
extension String.Encoding : CustomStringConvertible {
public var description: String {
return String.localizedName(of: self)
}
}
@available(*, unavailable, renamed: "String.Encoding")
public typealias NSStringEncoding = UInt
@available(*, unavailable, renamed: "String.Encoding.ascii")
public var NSASCIIStringEncoding: String.Encoding {
return .ascii
}
@available(*, unavailable, renamed: "String.Encoding.nextstep")
public var NSNEXTSTEPStringEncoding: String.Encoding {
return .nextstep
}
@available(*, unavailable, renamed: "String.Encoding.japaneseEUC")
public var NSJapaneseEUCStringEncoding: String.Encoding {
return .japaneseEUC
}
@available(*, unavailable, renamed: "String.Encoding.utf8")
public var NSUTF8StringEncoding: String.Encoding {
return .utf8
}
@available(*, unavailable, renamed: "String.Encoding.isoLatin1")
public var NSISOLatin1StringEncoding: String.Encoding {
return .isoLatin1
}
@available(*, unavailable, renamed: "String.Encoding.symbol")
public var NSSymbolStringEncoding: String.Encoding {
return .symbol
}
@available(*, unavailable, renamed: "String.Encoding.nonLossyASCII")
public var NSNonLossyASCIIStringEncoding: String.Encoding {
return .nonLossyASCII
}
@available(*, unavailable, renamed: "String.Encoding.shiftJIS")
public var NSShiftJISStringEncoding: String.Encoding {
return .shiftJIS
}
@available(*, unavailable, renamed: "String.Encoding.isoLatin2")
public var NSISOLatin2StringEncoding: String.Encoding {
return .isoLatin2
}
@available(*, unavailable, renamed: "String.Encoding.unicode")
public var NSUnicodeStringEncoding: String.Encoding {
return .unicode
}
@available(*, unavailable, renamed: "String.Encoding.windowsCP1251")
public var NSWindowsCP1251StringEncoding: String.Encoding {
return .windowsCP1251
}
@available(*, unavailable, renamed: "String.Encoding.windowsCP1252")
public var NSWindowsCP1252StringEncoding: String.Encoding {
return .windowsCP1252
}
@available(*, unavailable, renamed: "String.Encoding.windowsCP1253")
public var NSWindowsCP1253StringEncoding: String.Encoding {
return .windowsCP1253
}
@available(*, unavailable, renamed: "String.Encoding.windowsCP1254")
public var NSWindowsCP1254StringEncoding: String.Encoding {
return .windowsCP1254
}
@available(*, unavailable, renamed: "String.Encoding.windowsCP1250")
public var NSWindowsCP1250StringEncoding: String.Encoding {
return .windowsCP1250
}
@available(*, unavailable, renamed: "String.Encoding.iso2022JP")
public var NSISO2022JPStringEncoding: String.Encoding {
return .iso2022JP
}
@available(*, unavailable, renamed: "String.Encoding.macOSRoman")
public var NSMacOSRomanStringEncoding: String.Encoding {
return .macOSRoman
}
@available(*, unavailable, renamed: "String.Encoding.utf16")
public var NSUTF16StringEncoding: String.Encoding {
return .utf16
}
@available(*, unavailable, renamed: "String.Encoding.utf16BigEndian")
public var NSUTF16BigEndianStringEncoding: String.Encoding {
return .utf16BigEndian
}
@available(*, unavailable, renamed: "String.Encoding.utf16LittleEndian")
public var NSUTF16LittleEndianStringEncoding: String.Encoding {
return .utf16LittleEndian
}
@available(*, unavailable, renamed: "String.Encoding.utf32")
public var NSUTF32StringEncoding: String.Encoding {
return .utf32
}
@available(*, unavailable, renamed: "String.Encoding.utf32BigEndian")
public var NSUTF32BigEndianStringEncoding: String.Encoding {
return .utf32BigEndian
}
@available(*, unavailable, renamed: "String.Encoding.utf32LittleEndian")
public var NSUTF32LittleEndianStringEncoding: String.Encoding {
return .utf32LittleEndian
}