forked from scalameta/munit
/
Delta.scala
28 lines (25 loc) · 861 Bytes
/
Delta.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package munit.diff
sealed abstract class Delta[T](original: Chunk[T], revised: Chunk[T]) {
sealed abstract class TYPE
object TYPE {
case object CHANGE extends TYPE
case object DELETE extends TYPE
case object INSERT extends TYPE
}
def getType: TYPE
def getOriginal: Chunk[T] = original
def getRevised: Chunk[T] = revised
override def toString: String = s"Delta($getType, $getOriginal, $getRevised)"
}
class ChangeDelta[T](original: Chunk[T], revised: Chunk[T])
extends Delta(original, revised) {
override def getType: TYPE = TYPE.CHANGE
}
class InsertDelta[T](original: Chunk[T], revised: Chunk[T])
extends Delta(original, revised) {
override def getType: TYPE = TYPE.INSERT
}
class DeleteDelta[T](original: Chunk[T], revised: Chunk[T])
extends Delta(original, revised) {
override def getType: TYPE = TYPE.DELETE
}