aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/pkg_version.rb
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew/pkg_version.rb')
-rw-r--r--Library/Homebrew/pkg_version.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/Library/Homebrew/pkg_version.rb b/Library/Homebrew/pkg_version.rb
new file mode 100644
index 000000000..3d81df261
--- /dev/null
+++ b/Library/Homebrew/pkg_version.rb
@@ -0,0 +1,35 @@
+require 'version'
+
+class PkgVersion < Version
+ attr_reader :version, :revision
+
+ RX = /\A(.+?)(?:_(\d+))?\z/
+
+ def self.parse(path)
+ _, version, revision = *path.match(RX)
+ new(version, revision)
+ end
+
+ def initialize(version, revision)
+ super(version)
+
+ if head?
+ @revision = 0
+ else
+ @revision = revision.to_i
+ end
+ end
+
+ def to_s
+ if revision > 0
+ "#{version}_#{revision}"
+ else
+ version
+ end
+ end
+ alias_method :to_str, :to_s
+
+ def <=>(other)
+ super.nonzero? || revision <=> other.revision
+ end
+end