NicolasRouquette / alter

Diff and patch algorithms for Scala ADT's

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Alter

Alter allows you to extract differences between algebraic data tyepes

Example

case class Person(id: Int, name: String, roleIds: Seq[Int])

val karel = Person(1, "Karel", List(1,2,3))
val dirk = Person(2, "Dirk", List(2,3,4,5))

println(Diff[Person].diff(karel, dirk))

Output

Changes(
  List(
    Named(id,Update(2)),
    Named(name,Update(Dirk)),
    Named(roleIds,Changes(List(Delete(1), Copy(2), Copy(3), Insert(4), Insert(5))))
  )
)

This is useful for

  • VirtualDOM
  • Database updates (but expensive)
  • JSON diff
  • Other tree diffs

About

Diff and patch algorithms for Scala ADT's


Languages

Language:Scala 100.0%