@@ -15,23 +15,33 @@ abstract class WikiClade extends Clade {
1515
1616 def priorityOverride : Double
1717
18- case class WikiCladeMetadata (trueName : String , ancestors : List [Clade ], path : Option [String ], cladeType : String , docPriority : Double )
18+ case class WikiCladeMetadata (trueName : String , ancestors : List [Clade ], path : Option [String ], cladeType : String ,
19+ docPriority : Double , paraphyletic : Boolean = false )
1920
2021 override def DOTDefinition : Option [String ] = {
2122 val cladeTypeStr = if (meta.cladeType.isEmpty) " " else s """ <FONT POINT-SIZE=\"10\"> ${meta.cladeType}</FONT><br/> """
2223 val hrefStr = meta.path match {
2324 case None => " "
2425 case Some (p) => s """ href=" ${WikiClade .baseUrl}${p.replaceAll(" &" , " &" )}", """
2526 }
27+ val asterisk = if (meta.paraphyletic) " *" else " "
2628 val dispname =
2729 if (meta.trueName == name) name
28- else s " ${meta.trueName}<br/>( $name) "
30+ else s " ${meta.trueName}<br/>( $name) $asterisk "
2931 Some (s """ " $name" [ $hrefStr label=< $cladeTypeStr<B> $dispname</B>>] """ )
3032 }
3133
3234 def priority : Double = Math .min(
3335 Math .min(priorityOverride, meta.docPriority),
3436 if (WikiClade .importantCladeTypes contains meta.cladeType) 20 else 100 )
37+
38+ def canEqual (obj : Any ): Boolean = obj.isInstanceOf [WikiClade ]
39+ override def equals (obj : Any ): Boolean = obj match {
40+ case obj : WikiClade => obj.canEqual(this ) && this .meta.trueName == obj.meta.trueName
41+ case _ => false
42+ }
43+
44+ override def hashCode (): Int = meta.trueName.hashCode
3545}
3646
3747object WikiClade {
0 commit comments