2.7 KiB
Getting started
Learn how to use Levenshtein Transformations.
Installation
- Open your Swift package in GNOME Builder, Xcode, or any other IDE.
- Open the
Package.swiftfile. - Into the
Packageinitializer, underdependencies, paste:
.package(url: "https://git.aparoksha.dev/aparoksha/levenshtein-transformations", from: "0.1.0")
Usage
let source = [1, 2, 5, 6]
let target = [0, 1, 5, 6, 10]
There are three functions available for arrays containing elements conforming to Equatable and strings.
Arrays with Equatable Elements and Strings
Levenshtein Distance
Get the Levenshtein distance with Swift/Array/levenshteinDistance(to:) (for strings: Swift/String/levenshteinDistance(to:)).
print(source.levenshteinDistance(to: target))
This example outputs 3.
Transformation Steps
Get the individual transformation steps with Swift/Array/getTransformations(to:) (for strings: Swift/String/getTransformations(to:)).
print(source.getTransformations(to: target).map { $0.description(source: source) }.joined(separator: "\n"))
This example prints the descriptions of the transformations:
Replace '1' at position 0 with '0'
Replace '2' at position 1 with '1'
Insert '10' at position 4
Run Functions for the Steps
Directly run functions for the replace, delete and insert transformations using the Swift/Array/transform(to:functions:)-2wzm8 (for strings: Swift/String/transform(to:functions:)-3b6nc) function.
var modified = source
source.transform(
to: target,
functions: .init { index, element in
modified[index] = element
} delete: { index in
modified.remove(at: index)
} insert: { index, element in
modified.insert(element, at: index)
}
)
print(modified == target)
This example outputs true.
The transform functions are available in an asynchronous version: Swift/Array/transform(to:functions:)-756uw for arrays and Swift/String/transform(to:functions:)-46is for strings.
Arrays with Identifiable Elements
The same functions are available for arrays with identifiable elements, but they are named differently to avoid conflicts:
Swift/Array/identifiableLevenshteinDistance(to:)Swift/Array/identifiableGetTransformations(to:)Swift/Array/identifiableTransform(to:functions:)-2500qSwift/Array/identifiableTransform(to:functions:)-1du5b
Development
Levenshtein Transformations is an open source project. Visit the Git repository for bug reports, feature requests, pull requests and more information.