Skip to content

Commit 4272240

Browse files
committed
Initial implementation of NSNumberFormatter.
- Added implementation for attributes. - Added unit tests. - Updated implementation status documentation.
1 parent 0b6479b commit 4272240

File tree

8 files changed

+1171
-88
lines changed

8 files changed

+1171
-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: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@
209209
84BA558E1C16F90900F48C54 /* TestNSTimeZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 84BA558D1C16F90900F48C54 /* TestNSTimeZone.swift */; };
210210
88D28DE71C13AE9000494606 /* TestNSGeometry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88D28DE61C13AE9000494606 /* TestNSGeometry.swift */; };
211211
A5A34B561C18C85D00FD972B /* TestNSByteCountFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */; };
212+
AA664D4F1C1B03CA00C22186 /* TestNSNumberFormatter.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */; };
212213
C2A9D75C1C15C08B00993803 /* TestNSUUID.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2A9D75B1C15C08B00993803 /* TestNSUUID.swift */; };
213214
C93559291C12C49F009FD6A9 /* TestNSAffineTransform.swift in Sources */ = {isa = PBXBuildFile; fileRef = C93559281C12C49F009FD6A9 /* TestNSAffineTransform.swift */; };
214215
DCDBB8331C1768AC00313299 /* TestNSData.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCDBB8321C1768AC00313299 /* TestNSData.swift */; };
@@ -549,6 +550,7 @@
549550
84BA558D1C16F90900F48C54 /* TestNSTimeZone.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSTimeZone.swift; sourceTree = "<group>"; };
550551
88D28DE61C13AE9000494606 /* TestNSGeometry.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSGeometry.swift; sourceTree = "<group>"; };
551552
A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSByteCountFormatter.swift; sourceTree = "<group>"; };
553+
AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSNumberFormatter.swift; sourceTree = "<group>"; };
552554
C2A9D75B1C15C08B00993803 /* TestNSUUID.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSUUID.swift; sourceTree = "<group>"; };
553555
C93559281C12C49F009FD6A9 /* TestNSAffineTransform.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSAffineTransform.swift; sourceTree = "<group>"; };
554556
DCDBB8321C1768AC00313299 /* TestNSData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestNSData.swift; sourceTree = "<group>"; };
@@ -1074,6 +1076,7 @@
10741076
7A7D6FBA1C16439400957E2E /* TestNSURLResponse.swift */,
10751077
A5A34B551C18C85D00FD972B /* TestNSByteCountFormatter.swift */,
10761078
612952F81C1B235900BE0FD9 /* TestNSNull.swift */,
1079+
AA664D4E1C1B03CA00C22186 /* TestNSNumberFormatter.swift */,
10771080
);
10781081
name = Tests;
10791082
sourceTree = "<group>";
@@ -1795,7 +1798,8 @@
17951798
6E203B8D1C1303BB003B2576 /* TestNSBundle.swift in Sources */,
17961799
88D28DE71C13AE9000494606 /* TestNSGeometry.swift in Sources */,
17971800
EA66F64C1BF1619600136161 /* TestNSDictionary.swift in Sources */,
1798-
ED58F76F1C134B3A00E6A5BE /* (null) in Sources */,
1801+
ED58F76F1C134B3A00E6A5BE /* TestNSJSONSerialization.swift in Sources */,
1802+
AA664D4F1C1B03CA00C22186 /* TestNSNumberFormatter.swift in Sources */,
17991803
EA66F6581BF1619600136161 /* TestNSURL.swift in Sources */,
18001804
EA66F6441BF1619600136161 /* main.swift in Sources */,
18011805
);

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)