From b96ceabb80e9e9de41719b1a62dc0e7b560fd384 Mon Sep 17 00:00:00 2001 From: Mark Harrah Date: Tue, 14 Feb 2012 21:59:12 -0500 Subject: [PATCH] Ordering instances for ResolvedReference, BuildRef, ProjectRef --- main/Reference.scala | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/main/Reference.scala b/main/Reference.scala index 814a04ce7..c05a173a9 100644 --- a/main/Reference.scala +++ b/main/Reference.scala @@ -45,6 +45,25 @@ object RootProject } object Reference { + implicit val resolvedReferenceOrdering: Ordering[ResolvedReference] = new Ordering[ResolvedReference] { + def compare(a: ResolvedReference, b: ResolvedReference): Int = (a, b) match { + case (ba: BuildRef, bb: BuildRef) => buildRefOrdering.compare(ba, bb) + case (pa: ProjectRef, pb: ProjectRef) => projectRefOrdering.compare(pa, pb) + case (_: BuildRef, _: ProjectRef) => -1 + case (_: ProjectRef, _: BuildRef) => 1 + } + } + implicit val buildRefOrdering: Ordering[BuildRef] = new Ordering[BuildRef] { + def compare(a: BuildRef, b: BuildRef): Int = a.build compareTo b.build + } + + implicit val projectRefOrdering: Ordering[ProjectRef] = new Ordering[ProjectRef] { + def compare(a: ProjectRef, b: ProjectRef): Int = { + val bc = a.build compareTo b.build + if(bc == 0) a.project compareTo b.project else bc + } + } + def buildURI(ref: ResolvedReference): URI = ref match { case BuildRef(b) => b case ProjectRef(b, _) => b