diff --git a/lib/ranking/rank.rb b/lib/ranking/rank.rb index 73698a258871ec9924e7a74463cf0f8bfb571808..351180261431f54b906de2b28b19d318349984bc 100644 --- a/lib/ranking/rank.rb +++ b/lib/ranking/rank.rb @@ -28,26 +28,19 @@ class BasicRater # Don't instanciate this directly, use Rater end def rateItem item, inversePosition # Returns: RatedItem instance - positionRating = inversePosition * @positionWeight useRating = (item.downloads < item.views ? item.downloads : item.views)*@useWeight likeRating = item.likes * @likeWeight - rate = positionRating + useRating + likeRating RatedItem.new( item, rate ) - end def sortByRate items - first = items.first - rest = items.drop(1) - - rest.zip( rest.size.downto(1) ) - .collect { |item,reverseIndex| self.rateItem( item, reverseIndex ) } # Returns RatedItem instance - .sort { |itemA,itemB| itemA.rate <=> itemB.rate } - .collect { |ri| ri.item } - .push( first ) - .reverse # Best ranked comes first + items.zip( items.size.downto(1) ) + .collect { |item,reverseIndex| self.rateItem( item, reverseIndex ) } + .sort { |itemA,itemB| itemA.rate <=> itemB.rate } + .collect { |ri| ri.item } + .reverse # Best ranked comes first end end