diff options
Diffstat (limited to 'Library/Homebrew/pkg_version.rb')
| -rw-r--r-- | Library/Homebrew/pkg_version.rb | 35 |
1 files changed, 22 insertions, 13 deletions
diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb index 4e9e351ff..62072273a 100644 --- a/Library/Homebrew/pkg_version.rb +++ b/Library/Homebrew/pkg_version.rb @@ -1,36 +1,45 @@ -require 'version' +require "version" -class PkgVersion < Version - attr_reader :version, :revision +class PkgVersion + include Comparable RX = /\A(.+?)(?:_(\d+))?\z/ def self.parse(path) _, version, revision = *path.match(RX) - new(version, revision) + version = Version.new(version) + new(version, revision.to_i) end def initialize(version, revision) - super(version) + @version = version + @revision = version.head? ? 0 : revision + end - if head? - @revision = 0 - else - @revision = revision.to_i - end + def head? + version.head? end def to_s if revision > 0 "#{version}_#{revision}" else - version + version.to_s end end alias_method :to_str, :to_s def <=>(other) - return unless Version === other - super.nonzero? || revision <=> other.revision + return unless PkgVersion === other + (version <=> other.version).nonzero? || revision <=> other.revision end + alias_method :eql?, :== + + def hash + version.hash ^ revision.hash + end + + protected + + attr_reader :version, :revision end |
