Skip to content

Commit 3ac6ee3

Browse files
committed
Initial implementation of NSNumberFormatter.
- Added implementation for attributes. - Added unit tests. - Updated implementation status documentation.
1 parent 387b11f commit 3ac6ee3

File tree

8 files changed

+1173
-88
lines changed

8 files changed

+1173
-88
lines changed

Docs/Status.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ As Foundation is a work in progress, not all methods and functionality are prese
3131

3232
* `NSFormatter` is fully implemented.
3333
* `NSDateFormatter` is mostly implemented.
34+
* `NSNumberFormatter` is mostly implemented.
3435
* The remaining formatters are not yet implemented.
3536

3637

Foundation.xcodeproj/project.pbxproj

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,7 @@
210210
84BA558E1C16F90900F48C54 /* TestNSTimeZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84BA558D1C16F90900F48C54 /* TestNSTimeZone.swift */; };
211211
88D28DE71C13AE9000494606 /* TestNSGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D28DE61C13AE9000494606 /* TestNSGeometry.swift */; };
212212
A5A34B561C18C85D00FD972B /* TestNSByteCountFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */; };
213+
AA664D4F1C1B03CA00C22186 /* TestNSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */; };
213214
C2A9D75C1C15C08B00993803 /* TestNSUUID.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2A9D75B1C15C08B00993803 /* TestNSUUID.swift */; };
214215
C93559291C12C49F009FD6A9 /* TestNSAffineTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93559281C12C49F009FD6A9 /* TestNSAffineTransform.swift */; };
215216
DCDBB8331C1768AC00313299 /* TestNSData.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDBB8321C1768AC00313299 /* TestNSData.swift */; };
@@ -551,6 +552,7 @@
551552
84BA558D1C16F90900F48C54 /* TestNSTimeZone.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSTimeZone.swift; sourceTree = "<group>"; };
552553
88D28DE61C13AE9000494606 /* TestNSGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSGeometry.swift; sourceTree = "<group>"; };
553554
A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSByteCountFormatter.swift; sourceTree = "<group>"; };
555+
AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSNumberFormatter.swift; sourceTree = "<group>"; };
554556
C2A9D75B1C15C08B00993803 /* TestNSUUID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSUUID.swift; sourceTree = "<group>"; };
555557
C93559281C12C49F009FD6A9 /* TestNSAffineTransform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSAffineTransform.swift; sourceTree = "<group>"; };
556558
DCDBB8321C1768AC00313299 /* TestNSData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSData.swift; sourceTree = "<group>"; };
@@ -1077,6 +1079,9 @@
10771079
7A7D6FBA1C16439400957E2E /* TestNSURLResponse.swift */,
10781080
C2A9D75B1C15C08B00993803 /* TestNSUUID.swift */,
10791081
5B40F9F11C125187000E72E3 /* TestNSXMLParser.swift */,
1082+
A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */,
1083+
612952F81C1B235900BE0FD9 /* TestNSNull.swift */,
1084+
AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */,
10801085
);
10811086
name = Tests;
10821087
sourceTree = "<group>";
@@ -1799,7 +1804,8 @@
17991804
6E203B8D1C1303BB003B2576 /* TestNSBundle.swift in Sources */,
18001805
88D28DE71C13AE9000494606 /* TestNSGeometry.swift in Sources */,
18011806
EA66F64C1BF1619600136161 /* TestNSDictionary.swift in Sources */,
1802-
ED58F76F1C134B3A00E6A5BE /* (null) in Sources */,
1807+
ED58F76F1C134B3A00E6A5BE /* TestNSJSONSerialization.swift in Sources */,
1808+
AA664D4F1C1B03CA00C22186 /* TestNSNumberFormatter.swift in Sources */,
18031809
EA66F6581BF1619600136161 /* TestNSURL.swift in Sources */,
18041810
EA66F6441BF1619600136161 /* main.swift in Sources */,
18051811
);

Foundation.xcodeproj/xcshareddata/xcschemes/SwiftFoundation.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
33
LastUpgradeVersion = "0710"
4-
version = "1.3">
4+
version = "1.8">
55
<BuildAction
66
parallelizeBuildables = "NO"
77
buildImplicitDependencies = "NO">

Foundation.xcodeproj/xcshareddata/xcschemes/TestFoundation.xcscheme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<Scheme
33
LastUpgradeVersion = "0710"
4-
version = "1.3">
4+
version = "1.8">
55
<BuildAction
66
parallelizeBuildables = "NO"
77
buildImplicitDependencies = "NO">

Foundation/NSNumber.swift

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ extension Double : _ObjectTypeBridgeable {
9595
}
9696
}
9797

98-
extension Bool: _ObjectTypeBridgeable {
98+
extension Bool : _ObjectTypeBridgeable {
9999
public init(_ number: NSNumber) {
100100
self = number.boolValue
101101
}
@@ -114,6 +114,13 @@ extension Bool: _ObjectTypeBridgeable {
114114
}
115115
}
116116

117+
extension Bool : _CFBridgable {
118+
typealias CFType = CFBooleanRef
119+
var _cfObject: CFType {
120+
return self ? kCFBooleanTrue : kCFBooleanFalse
121+
}
122+
}
123+
117124
extension NSNumber : FloatLiteralConvertible, IntegerLiteralConvertible, BooleanLiteralConvertible {
118125

119126
}
@@ -379,3 +386,8 @@ public class NSNumber : NSValue {
379386
return CFNumberGetTypeID()
380387
}
381388
}
389+
390+
extension CFNumberRef : _NSBridgable {
391+
typealias NSType = NSNumber
392+
internal var _nsObject: NSType { return unsafeBitCast(self, NSType.self) }
393+
}

0 commit comments

Comments
 (0)