package scales.xml.equals
import scales.xml.{PullType, QName, Elem, Attribs, Attributes, Attribute, XmlItem, XmlPath, EndElem, XCC, Misc, Miscs}
import scales.xml.serializers.NamespaceContext
import scala.collection.immutable.{ Stack, Map }
sealed trait XmlDifference[X] {
val left : X
val right : X
}
object SomeDifference extends XmlDifference[AnyRef] {
val left = null
val right = null
def unapply(a : XmlDifference[AnyRef]) : Option[(AnyRef, AnyRef)] = Some((left,right))
val noCalculation : Option[(XmlDifference[_], ComparisonContext)] = Some((this, ComparisonContext()))
}
case class DifferentTypes( left : PullType, right : PullType ) extends XmlDifference[PullType]
case class QNameDifference( left : QName, right : QName ) extends XmlDifference[QName]
sealed trait AttributeDifference extends XmlDifference[Attribute]
sealed trait ElemDifference extends XmlDifference[Elem]
sealed trait AttributesDifference extends XmlDifference[Attributes]
case class AttributeNameDifference( left : Attribute, right : Attribute ) extends AttributeDifference
case class AttributeValueDifference( left : Attribute, right : Attribute ) extends AttributeDifference
case class DifferentNumberOfAttributes( left : Attributes, right : Attributes ) extends AttributesDifference
case class DifferentValueAttributes( left : Attributes, right : Attributes, differentValue : Attribute ) extends AttributesDifference
case class MissingAttributes( left : Attributes, right : Attributes, missing : Attribute ) extends AttributesDifference
case class ItemDifference( left : XmlItem, right : XmlItem) extends XmlDifference[XmlItem]
case class ElemNameDifference( left : Elem, right : Elem ) extends ElemDifference
case class ElemAttributeDifference( left : Elem, right : Elem, attributesDifference : AttributesDifference ) extends ElemDifference
case class ElemNamespacesDifference( left : Elem, right : Elem ) extends ElemDifference
case class EndElemNameDifference( left : EndElem, right : EndElem ) extends XmlDifference[EndElem]
case class MiscDifference( left : Misc, right : Misc, isProlog : Boolean ) extends XmlDifference[Misc]
case class MiscDifferentTypes( left : Misc, right : Misc, isProlog : Boolean ) extends XmlDifference[Misc]
case class DifferentNumberOfMiscs( left : Miscs, right : Miscs, isProlog : Boolean ) extends XmlDifference[Miscs]
<iframe src="https://scalesxml.github.io/scales-xml_2.10/0.5.0/api.sxr/scales/xml/equals/XmlDifference.scala.html" width="1280" height="720" frameborder="0"> </iframe>