Skip to content

Commit

Permalink
Merge pull request #48 from outfoxx/fix/anyvalue-encoders
Browse files Browse the repository at this point in the history
Use `box`ing when encoding AnyValues
  • Loading branch information
kdubb committed Feb 12, 2023
2 parents a102899 + 13427ac commit 48fcb56
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 27 deletions.
6 changes: 3 additions & 3 deletions Sources/PotentCBOR/CBOREncoder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -197,11 +197,11 @@ public struct CBOREncoderTransform: InternalEncoderTransform, InternalValueSeria

switch value {
case .nil:
return .null
return try boxNil(encoder: encoder)
case .bool(let value):
return .boolean(value)
return try box(value, encoder: encoder)
case .string(let value):
return .utf8String(value)
return try box(value, encoder: encoder)
case .int8(let value):
return try box(value, encoder: encoder)
case .int16(let value):
Expand Down
42 changes: 21 additions & 21 deletions Sources/PotentJSON/JSONEncoder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -363,47 +363,47 @@ public struct JSONEncoderTransform: InternalEncoderTransform, InternalValueSeria

switch value {
case .nil:
return .null
return try boxNil(encoder: encoder)
case .bool(let value):
return .bool(value)
return try box(value, encoder: encoder)
case .int8(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .int16(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .int32(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .int64(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .integer(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .uint8(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .uint16(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .uint32(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .uint64(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .unsignedInteger(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .float16(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .float(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .double(let value):
return .number(JSON.Number(value))
return try box(value, encoder: encoder)
case .decimal(let value):
return .number(JSON.Number(value.description, isInteger: false, isNegative: value < 0))
return try box(value, encoder: encoder)
case .string(let value):
return .string(value)
return try box(value, encoder: encoder)
case .data(let value):
return .string(value.base64EncodedString())
return try box(value, encoder: encoder)
case .url(let value):
return .string(value.absoluteString)
return try box(value, encoder: encoder)
case .date(let value):
return .string(ZonedDate(date: value, timeZone: .utc).iso8601EncodedString())
return try box(value, encoder: encoder)
case .uuid(let value):
return .string(value.uuidString)
return try box(value, encoder: encoder)
case .array(let value):
return .array(try value.map { try box($0, encoder: encoder) })
case .dictionary(let value):
Expand Down
2 changes: 1 addition & 1 deletion Sources/PotentYAML/YAMLEncoder.swift
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ public struct YAMLEncoderTransform: InternalEncoderTransform, InternalValueSeria
public static func box(_ value: AnyValue, encoder: IVE) throws -> YAML {
switch value {
case .nil:
return .null(anchor: nil)
return try boxNil(encoder: encoder)
case .bool(let value):
return try box(value, encoder: encoder)
case .int8(let value):
Expand Down
4 changes: 2 additions & 2 deletions Tests/JSONAnyValueTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ class JSONAnyValueTests: XCTestCase {
"data" : "QmluYXJ5IERhdGE=",
"url" : "https://example.com/some/thing",
"uuid" : "46076D06-86E8-4B3B-80EF-B24115D4C609",
"date" : "2001-01-15T06:56:07.890Z",
"date" : 1234567.89,
"array" : [
null,
false,
Expand Down Expand Up @@ -185,7 +185,7 @@ class JSONAnyValueTests: XCTestCase {
XCTAssertEqual(dstValue.data, .string(srcValue.data.dataValue!.base64EncodedString()))
XCTAssertEqual(dstValue.url, .string(srcValue.url.urlValue!.absoluteString))
XCTAssertEqual(dstValue.uuid, .string(srcValue.uuid.uuidValue!.uuidString))
XCTAssertEqual(dstValue.date.stringValue, ZonedDate(date: srcValue.date.dateValue!, timeZone: .utc).iso8601EncodedString())
XCTAssertEqual(dstValue.date, .double(1234567.89))
XCTAssertEqual(dstValue.array, .array([nil, false, .int64(456), "a"]))
XCTAssertEqual(dstValue.object, .dictionary(["c": .int64(1), "a": .int64(2), "d": .int64(3), "b": .int64(4)]))
XCTAssertEqual(dstValue.intObject, .dictionary([.string("2"): "a", .string("1"): "b", .string("4"): "c", .string("3"): "d"]))
Expand Down

0 comments on commit 48fcb56

Please sign in to comment.