@@ -15,15 +15,12 @@ public enum MapError : Error {
1515
1616public enum Map {
1717 case null
18+ case bool( Bool )
1819 case number( Number )
1920 case string( String )
2021 case array( [ Map ] )
2122 case dictionary( [ String : Map ] )
2223
23- public static func bool( _ value: Bool ) -> Map {
24- return . number( Number ( value) )
25- }
26-
2724 public static func int( _ value: Int ) -> Map {
2825 return . number( Number ( value) )
2926 }
@@ -47,7 +44,7 @@ extension Map {
4744 }
4845
4946 public init ( _ bool: Bool ) {
50- self . init ( Number ( bool) )
47+ self = . bool ( bool)
5148 }
5249
5350 public init ( _ int: Int ) {
@@ -211,7 +208,7 @@ extension Map {
211208
212209extension Map {
213210 public var bool : Bool ? {
214- return try ? ( get ( ) as Number ) . boolValue
211+ return try ? get ( )
215212 }
216213
217214 public var int : Int ? {
@@ -246,6 +243,9 @@ extension Map {
246243 switch self {
247244 case . null:
248245 return false
246+
247+ case let . bool( value) :
248+ return value
249249
250250 case let . number( number) :
251251 return number. boolValue
@@ -321,6 +321,9 @@ extension Map {
321321 switch self {
322322 case . null:
323323 return " null "
324+
325+ case let . bool( value) :
326+ return " \( value) "
324327
325328 case let . number( number) :
326329 return number. stringValue
@@ -379,6 +382,8 @@ extension Map {
379382 switch self {
380383 case let . number( value as T ) :
381384 return value
385+ case let . bool( value as T ) :
386+ return value
382387 case let . string( value as T ) :
383388 return value
384389 case let . array( value as T ) :
@@ -608,6 +613,8 @@ extension Map : Codable {
608613 switch self {
609614 case . null:
610615 try container. encodeNil ( )
616+ case let . bool( value) :
617+ try container. encode ( value)
611618 case let . number( number) :
612619 try container. encode ( number. doubleValue)
613620 case let . string( string) :
@@ -647,6 +654,8 @@ extension Map : Hashable {
647654 switch self {
648655 case . null:
649656 hasher. combine ( 0 )
657+ case let . bool( value) :
658+ hasher. combine ( value)
650659 case let . number( number) :
651660 hasher. combine ( number)
652661 case let . string( string) :
@@ -743,6 +752,8 @@ extension Map {
743752 switch map {
744753 case . null:
745754 return " null "
755+ case let . bool( value) :
756+ return value. description
746757 case let . number( number) :
747758 return number. description
748759 case . string( let string) :
0 commit comments