move version detection to seperate function and change line endings

This commit is contained in:
Christian Mehlmauer
2015-02-18 18:37:47 +01:00
parent 0c9cf4ddd5
commit 884f64addb

View File

@@ -1,46 +1,53 @@
# encoding: UTF-8 # encoding: UTF-8
class WpItem class WpItem
attr_writer :version attr_writer :version
module Versionable module Versionable
# Get the version from the readme.txt # Get the version from the readme.txt
# #
# @return [ String ] The version number # @return [ String ] The version number
def version def version
unless @version unless @version
# This check is needed because readme_url can return nil # This check is needed because readme_url can return nil
if has_readme? if has_readme?
response = Browser.get(readme_url) response = Browser.get(readme_url)
version = response.body[/\b(?:stable tag|version):\s*(?!trunk)([0-9a-z\.-]+)/i, 1] @version = extract_version(response.body)
if version.nil? || version !~ /[0-9]+/ end
extracted_versions = response.body.scan(/[=]+\s+(?:v(?:ersion)?\s*)?([0-9\.-]+)[ \ta-z0-9\(\)\.-]*[=]+/i) end
return if extracted_versions.nil? || extracted_versions.length == 0 @version
extracted_versions.flatten! end
# must contain at least one number
extracted_versions = extracted_versions.select { |x| x =~ /[0-9]+/ } # @return [ String ]
sorted = extracted_versions.sort { |x,y| def to_s
begin item_version = self.version
Gem::Version.new(x) <=> Gem::Version.new(y) "#@name#{' - v' + item_version.strip if item_version}"
rescue end
0
end # Extracts the version number from a given string/body
} #
@version = sorted.last # @return [ String ] detected version
else def extract_version(body)
@version = version version = body[/\b(?:stable tag|version):\s*(?!trunk)([0-9a-z\.-]+)/i, 1]
end if version.nil? || version !~ /[0-9]+/
end extracted_versions = body.scan(/[=]+\s+(?:v(?:ersion)?\s*)?([0-9\.-]+)[ \ta-z0-9\(\)\.-]*[=]+/i)
end return if extracted_versions.nil? || extracted_versions.length == 0
@version extracted_versions.flatten!
end # must contain at least one number
extracted_versions = extracted_versions.select { |x| x =~ /[0-9]+/ }
# @return [ String ] sorted = extracted_versions.sort { |x,y|
def to_s begin
item_version = self.version Gem::Version.new(x) <=> Gem::Version.new(y)
"#@name#{' - v' + item_version.strip if item_version}" rescue
end 0
end
end }
end return sorted.last
else
return version
end
end
end
end