@@ -109,6 +109,62 @@ extension NSString {
109
109
}
110
110
}
111
111
112
+ extension NSString {
113
+ public struct StringTransform : Equatable , Hashable , RawRepresentable {
114
+ typealias RawType = String
115
+
116
+ public let rawValue : String
117
+
118
+ public var hashValue : Int {
119
+ return self . rawValue. hashValue
120
+ }
121
+
122
+ public static func == ( _ lhs: StringTransform , _ rhs: StringTransform ) -> Bool {
123
+ return lhs. rawValue == rhs. rawValue
124
+ }
125
+
126
+ public init ( _ rawValue: String ) {
127
+ self . rawValue = rawValue
128
+ }
129
+
130
+ public init ( rawValue: String ) {
131
+ self . rawValue = rawValue
132
+ }
133
+ }
134
+ }
135
+
136
+ // Transliteration
137
+ extension NSString . StringTransform {
138
+ public static let toLatin : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformToLatin! as! String )
139
+ public static let latinToArabic : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinArabic! as! String )
140
+ public static let latinToCyrillic : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinCyrillic! as! String )
141
+ public static let latinToGreen : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinGreek! as! String )
142
+ public static let latinToHangul : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinHangul! as! String )
143
+ public static let latinToHebrew : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinHebrew! as! String )
144
+ public static let latinToHiragana : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinHiragana! as! String )
145
+ public static let latinToKatakana : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinKatakana! as! String )
146
+ public static let latinToThai : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformLatinThai! as! String )
147
+ public static let hiraganaToKatakana : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformHiraganaKatakana! as! String )
148
+ public static let mandarinToLatin : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformMandarinLatin! as! String )
149
+ }
150
+
151
+ // Diacritic and Combining Mark Removal
152
+ extension NSString . StringTransform {
153
+ public static let stripDiacritics : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformStripDiacritics! as! String )
154
+ public static let stripCombiningMarks : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformStripCombiningMarks! as! String )
155
+ }
156
+
157
+ // Halfwidth and Fullwidth Form Conversion
158
+ extension NSString . StringTransform {
159
+ public static let fullwidthToHalfwidth : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformFullwidthHalfwidth! as! String )
160
+ }
161
+
162
+ // Character Representation
163
+ extension NSString . StringTransform {
164
+ public static let toUnicodeName : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformToUnicodeName! as! String )
165
+ public static let toXMLHex : NSString . StringTransform = NSString . StringTransform ( rawValue: kCFStringTransformToXMLHex! as! String )
166
+ }
167
+
112
168
internal func _createRegexForPattern( _ pattern: String , _ options: NSRegularExpression . Options ) -> NSRegularExpression ? {
113
169
struct local {
114
170
static let __NSRegularExpressionCache : NSCache < NSString , NSRegularExpression > = {
@@ -1113,10 +1169,10 @@ extension NSString {
1113
1169
return str. _swiftObject
1114
1170
}
1115
1171
1116
- open func applyingTransform( _ transform: String , reverse: Bool ) -> String ? {
1172
+ open func applyingTransform( _ transform: StringTransform , reverse: Bool ) -> String ? {
1117
1173
let string = CFStringCreateMutable ( kCFAllocatorSystemDefault, 0 ) !
1118
1174
CFStringReplaceAll ( string, _cfObject)
1119
- if ( CFStringTransform ( string, nil , transform. _cfObject, reverse) ) {
1175
+ if ( CFStringTransform ( string, nil , transform. rawValue . _cfObject, reverse) ) {
1120
1176
return string. _swiftObject
1121
1177
} else {
1122
1178
return nil
0 commit comments