diff --git a/Sources/LevenshteinTransformations/AsyncFunctions.swift b/Sources/LevenshteinTransformations/AsyncFunctions.swift index 5823132..2433c52 100644 --- a/Sources/LevenshteinTransformations/AsyncFunctions.swift +++ b/Sources/LevenshteinTransformations/AsyncFunctions.swift @@ -30,4 +30,20 @@ public struct AsyncFunctions { self.insert = insert } + /// Initialize a functions value. + /// - Parameters: + /// - delete: Delete the element at a certain index. + /// - insert: Insert a certain element at a certain index. + public init( + delete: @escaping (Int) async -> Void, + insert: @escaping (Int, Element) async -> Void + ) { + self.replace = { index, element in + await delete(index) + await insert(index, element) + } + self.delete = delete + self.insert = insert + } + } diff --git a/Sources/LevenshteinTransformations/Functions.swift b/Sources/LevenshteinTransformations/Functions.swift index 18dc7b5..f3c247e 100644 --- a/Sources/LevenshteinTransformations/Functions.swift +++ b/Sources/LevenshteinTransformations/Functions.swift @@ -30,4 +30,20 @@ public struct Functions { self.insert = insert } + /// Initialize a functions value. + /// - Parameters: + /// - delete: Delete the element at a certain index. + /// - insert: Insert a certain element at a certain index. + public init( + delete: @escaping (Int) -> Void, + insert: @escaping (Int, Element) -> Void + ) { + self.replace = { index, element in + delete(index) + insert(index, element) + } + self.delete = delete + self.insert = insert + } + }