Skip to content

Commit

Permalink
Add append function using the "+" operator.
Browse files Browse the repository at this point in the history
  • Loading branch information
rogerluan authored May 28, 2022
1 parent 914d782 commit f53f53d
Showing 1 changed file with 13 additions and 1 deletion.
14 changes: 13 additions & 1 deletion Sources/KeyPath.swift
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import Foundation

/// Simple struct used to represent multiple segments of a string.
/// This is a utility used to recursively access values in nested dictionaries.
public struct KeyPath {
public struct KeyPath: Hashable {
public var segments: [String]

public var isEmpty: Bool { return segments.isEmpty }
Expand Down Expand Up @@ -41,6 +41,18 @@ extension KeyPath: ExpressibleByStringLiteral {
}
}

extension KeyPath: CustomStringConvertible {
public var description: String {
return segments.joined(separator: ".")
}
}

public extension KeyPath {
static func + (lhs: KeyPath, rhs: KeyPath) -> KeyPath {
return KeyPath(lhs.description + "." + rhs.description)
}
}

public extension Dictionary where Key == String {
subscript(keyPath keyPath: KeyPath) -> Any? {
get {
Expand Down

0 comments on commit f53f53d

Please sign in to comment.