tagging

This module contains integration layer between com.softwaremill.common.tagging and diffx

sbt

"com.softwaremill.diffx" %% "diffx-tagging" % "0.7.0"

mill

ivy"com.softwaremill.diffx::diffx-tagging::0.7.0"

Usage

Assuming you have some tagged types in your hierarchy:

import com.softwaremill.tagging._
sealed trait T1
sealed trait T2
case class TestData(p1: Int @@ T1, p2: Int @@ T2)

val t1 = TestData(1.taggedWith[T1], 1.taggedWith[T2])
val t2 = TestData(1.taggedWith[T1], 3.taggedWith[T2])

all you need to do is to put additional diffx implicits into current scope:

import com.softwaremill.diffx.compare
import com.softwaremill.diffx.generic.auto._

import com.softwaremill.diffx.tagging._
compare(t1, t2)
// res0: com.softwaremill.diffx.DiffResult = DiffResultObject(
//   name = "TestData",
//   fields = ListMap(
//     "p1" -> IdenticalValue(value = 1),
//     "p2" -> DiffResultValue(left = 1, right = 3)
//   )
// )