Simple O(n) diffing library
This is a simple Kotlin library I built to try out the following tech stack:
- Kotlin (main language)
- Gradle - Kotlin DSL (build system)
- Spek (BDD style unit testing framework)
- Expekt (expectation style assertions)
The differ will take two collections, an old and new, and a lambda for extracting a Pair
that:
- Represents a key for determining which values in the collections are for the same data element / field
- Represents the value for each element in the collection
import ca.snasir.kdiff
// Input dataset
val oldCollection = listOf(Element(1, "a"), Element(2, "b"))
val newCollection = listOf(Element(2, "c"), Element(3, "d"))
// Instantiate the differ with a key-value extraction lambda
val differ = Differ({ it: Element -> KeyValuePair(it.key, it.value) })
// Run differ in O(n) time
val diffs = differ.diffChanges(oldCollection, newCollection)
The resulting diffs will be of type Changes<Int, String>
.