Added Package.best_screenshot_for_version
This commit is contained in:
parent
ff254f8e00
commit
6feaa53920
1 changed files with 25 additions and 10 deletions
|
|
@ -47,17 +47,32 @@ class Package < ActiveRecord::Base
|
|||
self.joins(:screenshots).where(screenshots: {approved:false}).distinct(:name)
|
||||
end
|
||||
|
||||
# Get all screenshots and have them sorted descendingly by their version number (Debian style).
|
||||
def screenshots_sorted_by_version
|
||||
self.screenshots.to_a.sort do |x,y|
|
||||
version_x = DebImporter::Version.new(x.version)
|
||||
version_y = DebImporter::Version.new(y.version)
|
||||
if version_x<version_y
|
||||
1
|
||||
elsif version_x>version_y
|
||||
-1
|
||||
else
|
||||
0
|
||||
end
|
||||
self.screenshots.to_a.sort { |x,y| version_compare(x.version,y.version) }
|
||||
end
|
||||
|
||||
# Return the newest screenshot that is not newer than the given version.
|
||||
def best_screenshot_for_version(version)
|
||||
sorted_screenshots = self.screenshots_sorted_by_version
|
||||
sorted_screenshots.each do |ss|
|
||||
logger.debug { "Comparing version #{version} against #{ss.version}" }
|
||||
return ss if version_compare(version, ss.version)<=0
|
||||
end
|
||||
return sorted_screenshots.last
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def version_compare(x,y)
|
||||
version_x = DebImporter::Version.new(x)
|
||||
version_y = DebImporter::Version.new(y)
|
||||
if version_x<version_y
|
||||
1
|
||||
elsif version_x>version_y
|
||||
-1
|
||||
else
|
||||
0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue