mirror of
https://github.com/ysoftdevs/odc-analyzer.git
synced 2026-01-14 15:53:53 +01:00
39 lines
1000 B
Scala
39 lines
1000 B
Scala
package com.ysoft.odc
|
|
|
|
import com.ysoft.odc.SetDiff.Selection
|
|
|
|
|
|
object SetDiff{
|
|
sealed abstract class Selection
|
|
object Selection{
|
|
case object None extends Selection
|
|
case object Both extends Selection
|
|
case object Old extends Selection
|
|
case object New extends Selection
|
|
}
|
|
}
|
|
|
|
class SetDiff[T](val oldSet: Set[T], val newSet: Set[T]) {
|
|
lazy val added = newSet -- oldSet
|
|
lazy val removed = oldSet -- newSet
|
|
lazy val isEmpty = newSet == oldSet
|
|
def nonEmpty = !isEmpty
|
|
|
|
def map[U](f: T => U): SetDiff[U] = new SetDiff[U](
|
|
oldSet = oldSet.map(f),
|
|
newSet = newSet.map(f)
|
|
)
|
|
|
|
private def setPair(oldSetBool: Boolean, newSetBool: Boolean) = (oldSetBool, newSetBool) match {
|
|
case (false, false) => Selection.None
|
|
case (false, true) => Selection.New
|
|
case (true, false) => Selection.Old
|
|
case (true, true) => Selection.Both
|
|
}
|
|
|
|
def whichNonEmpty = setPair(oldSet.nonEmpty, newSet.nonEmpty)
|
|
|
|
def whichEmpty = setPair(oldSet.isEmpty, newSet.isEmpty)
|
|
|
|
}
|