Skip to content

Commit 9048ff1

Browse files
Rename memberwise
* Change it to `defaultCodable` * Make it the default instead of `semverString`
1 parent 802f676 commit 9048ff1

File tree

3 files changed

+21
-21
lines changed

3 files changed

+21
-21
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -56,20 +56,20 @@ let dict = [ // [{major 3, minor 0, patch 0,...
5656
]
5757

5858
// SemanticVersion is Codable
59-
// Note: the strategy defaults to `.semverString`
59+
// Note: the strategy defaults to `.defaultCodable`
60+
let defaultEncoder = JSONEncoder()
61+
defaultEncoder.semanticVersionEncodingStrategy = .defaultCodable
62+
let defaultDecoder = JSONDecoder()
63+
defaultDecoder.semanticVersionDecodingStrategy = .defaultCodable
64+
let defaultData = try defaultEncoder.encode(v123) // 58 bytes
65+
let defaultDecoded = try defaultDecoder.decode(SemanticVersion.self, from: defaultData) // 1.2.3
66+
defaultDecoded == v123 // true
67+
6068
let stringEncoder = JSONEncoder()
6169
stringEncoder.semanticVersionEncodingStrategy = .semverString
6270
let stringDecoder = JSONDecoder()
6371
stringDecoder.semanticVersionDecodingStrategy = .semverString
6472
let stringData = try stringEncoder.encode(v123) // 7 bytes -> "1.2.3", including quotes
6573
let stringDecoded = try stringDecoder.decode(SemanticVersion.self, from: stringData) // 1.2.3
6674
stringDecoded == v123 // true
67-
68-
let memberwiseEncoder = JSONEncoder()
69-
memberwiseEncoder.semanticVersionEncodingStrategy = .memberwise
70-
let memberwiseDecoder = JSONDecoder()
71-
memberwiseDecoder.semanticVersionDecodingStrategy = .memberwise
72-
let memberwiseData = try memberwiseEncoder.encode(v123) // 58 bytes
73-
let memberwiseDecoded = try memberwiseDecoder.decode(SemanticVersion.self, from: memberwiseData) // 1.2.3
74-
memberwiseDecoded == v123 // true
7575
```

Sources/SemanticVersion/SemanticVersion+Codable.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@ import Foundation
1616

1717
public enum SemanticVersionStrategy {
1818
/// Encode/decode the `SemanticVersion` as a structure to/from a JSON object
19-
case memberwise
19+
case defaultCodable
2020
/// Encode/decode the `SemanticVersion` to/fromfrom a string that conforms to the
2121
/// semantic version 2.0 specification at https://semver.org.
2222
case semverString
2323
}
2424

2525
extension JSONEncoder {
26-
/// The strategy to use in decoding semantic versions. Defaults to `.semverString`.
26+
/// The strategy to use in decoding semantic versions. Defaults to `.defaultCodable`.
2727
public var semanticVersionEncodingStrategy: SemanticVersionStrategy {
2828
get { userInfo.semanticDecodingStrategy }
2929
set { userInfo.semanticDecodingStrategy = newValue }
@@ -41,7 +41,7 @@ extension JSONDecoder {
4141
private extension [CodingUserInfoKey: Any] {
4242
var semanticDecodingStrategy: SemanticVersionStrategy {
4343
get {
44-
(self[.semanticVersionStrategy] as? SemanticVersionStrategy) ?? .semverString
44+
(self[.semanticVersionStrategy] as? SemanticVersionStrategy) ?? .defaultCodable
4545
}
4646
set {
4747
self[.semanticVersionStrategy] = newValue
@@ -64,7 +64,7 @@ extension SemanticVersion: Codable {
6464

6565
public init(from decoder: Decoder) throws {
6666
switch decoder.userInfo.semanticDecodingStrategy {
67-
case .memberwise:
67+
case .defaultCodable:
6868
let container = try decoder.container(keyedBy: CodingKeys.self)
6969
self.major = try container.decode(Int.self, forKey: .major)
7070
self.minor = try container.decode(Int.self, forKey: .minor)
@@ -87,7 +87,7 @@ extension SemanticVersion: Codable {
8787

8888
public func encode(to encoder: Encoder) throws {
8989
switch encoder.userInfo.semanticDecodingStrategy {
90-
case .memberwise:
90+
case .defaultCodable:
9191
var container = encoder.container(keyedBy: CodingKeys.self)
9292
try container.encode(major, forKey: .major)
9393
try container.encode(minor, forKey: .minor)

Tests/SemanticVersionTests/SemanticVersionCodingTests.swift

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,9 @@ import XCTest
1010
import SemanticVersion
1111

1212
final class SemanticVersionCodingTests: XCTestCase {
13-
func test_semverString_is_default() throws {
14-
XCTAssertEqual(.semverString, JSONEncoder().semanticVersionEncodingStrategy)
15-
XCTAssertEqual(.semverString, JSONDecoder().semanticVersionDecodingStrategy)
13+
func test_defaultCodable_is_default() throws {
14+
XCTAssertEqual(.defaultCodable, JSONEncoder().semanticVersionEncodingStrategy)
15+
XCTAssertEqual(.defaultCodable, JSONDecoder().semanticVersionDecodingStrategy)
1616
}
1717

1818
func test_encodable_semverString() throws {
@@ -34,11 +34,11 @@ final class SemanticVersionCodingTests: XCTestCase {
3434
XCTAssertEqual(actual, #""7.7.7-beta.423+build.17""#)
3535
}
3636

37-
func test_encodable_memberwise() throws {
37+
func test_encodable_defaultCodable() throws {
3838
let encoder = JSONEncoder()
3939
var actual: String
4040

41-
encoder.semanticVersionEncodingStrategy = .memberwise
41+
encoder.semanticVersionEncodingStrategy = .defaultCodable
4242

4343
actual = String(data: try encoder.encode(SemanticVersion(1, 2, 3)), encoding: .utf8)!
4444
XCTAssertTrue(actual.contains(#""major":1"#))
@@ -109,11 +109,11 @@ final class SemanticVersionCodingTests: XCTestCase {
109109
}
110110
}
111111

112-
func test_decodable_memberwise() throws {
112+
func test_decodable_defaultCodable() throws {
113113
let decoder = JSONDecoder()
114114
var json: Data
115115

116-
decoder.semanticVersionDecodingStrategy = .memberwise
116+
decoder.semanticVersionDecodingStrategy = .defaultCodable
117117

118118
json = """
119119
{

0 commit comments

Comments
 (0)