Remove @dynamicMember generally
This commit is contained in:
@@ -23,18 +23,19 @@ public extension CodingUserInfoKey {
|
||||
Provided for relative-path coding. See the instructions in our
|
||||
[README](https://github.com/mxcl/Path.swift/#codable).
|
||||
*/
|
||||
extension Path: Codable {
|
||||
extension Path: Codable {
|
||||
/// - SeeAlso: `CodingUserInfoKey.relativePath`
|
||||
/// :nodoc:
|
||||
public init(from decoder: Decoder) throws {
|
||||
let value = try decoder.singleValueContainer().decode(String.self)
|
||||
if value.hasPrefix("/") {
|
||||
string = value
|
||||
} else {
|
||||
guard let root = decoder.userInfo[.relativePath] as? Path else {
|
||||
throw DecodingError.dataCorrupted(.init(codingPath: [], debugDescription: "Path cannot decode a relative path if `userInfo[.relativePath]` not set to a Path object."))
|
||||
}
|
||||
} else if let root = decoder.userInfo[.relativePath] as? Path {
|
||||
string = (root/value).string
|
||||
} else if let root = decoder.userInfo[.relativePath] as? DynamicPath {
|
||||
string = (root/value).string
|
||||
} else {
|
||||
throw DecodingError.dataCorrupted(.init(codingPath: [], debugDescription: "Path cannot decode a relative path if `userInfo[.relativePath]` not set to a Path object."))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +45,8 @@ extension Path: Codable {
|
||||
var container = encoder.singleValueContainer()
|
||||
if let root = encoder.userInfo[.relativePath] as? Path {
|
||||
try container.encode(relative(to: root))
|
||||
} else if let root = encoder.userInfo[.relativePath] as? DynamicPath {
|
||||
try container.encode(relative(to: root))
|
||||
} else {
|
||||
try container.encode(string)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user