lib/invoker/version.rb in invoker-1.2.0 vs lib/invoker/version.rb in invoker-1.3.0
- old
+ new
@@ -1,3 +1,47 @@
module Invoker
- VERSION = "1.2.0"
+ class Version
+ include Comparable
+ attr_reader :major, :minor, :patch
+
+ def initialize(number)
+ t_major, t_minor, t_patch = number.split('.')
+ @major = t_major.to_i
+ @minor = t_minor.to_i
+ @patch = t_patch.to_i
+ end
+
+ def to_a
+ [major, minor, patch].compact
+ end
+
+ def <=>(version)
+ (major.to_i <=> version.major.to_i).nonzero? ||
+ (minor.to_i <=> version.minor.to_i).nonzero? ||
+ patch.to_i <=> version.patch.to_i
+ end
+
+ def matches?(operator, number)
+ version = Version.new(number)
+ self == version
+
+ return self == version if operator == '='
+ return self > version if operator == '>'
+ return self < version if operator == '<'
+ return version <= self && version.next > self if operator == '~>'
+ end
+
+ def next
+ next_splits = to_a
+
+ if next_splits.length == 1
+ next_splits[0] += 1
+ else
+ next_splits[-2] += 1
+ next_splits[-1] = 0
+ end
+
+ Version.new(next_splits.join('.'))
+ end
+ end
+ VERSION = "1.3.0"
end