Class: Version
Overview
:title: Version
A class for manipulating and storing conventional version numbers in the form of “1.0.0”, i.e. major, minor, teeny.
Usage
VERSION = Version["1.2.3"] # same as Version.new()
VERSION.major #=> 1
VERSION.minor #=> 2
VERSION.teeny #=> 3
VERSION.teeny += 1 #=> 4
VERSION > Version(1,2,3) #=> true
VERSION > Version("1.2.4") #=> false
Author(s)
-
Minero Aoki (originator)
-
Thomas Sawyer
Constant Summary collapse
- VERSION_EXP =
/\d+(?:[.-]\d+)*/
Class Method Summary collapse
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #==(other) ⇒ Object (also: #eql?)
- #dup ⇒ Object
- #hash ⇒ Object
-
#initialize(arg, *nums) ⇒ Version
constructor
A new instance of Version.
- #inspect ⇒ Object
- #major ⇒ Object
- #major=(i) ⇒ Object
- #minor ⇒ Object
- #minor=(i) ⇒ Object
- #next_major! ⇒ Object
- #next_minor! ⇒ Object
- #next_teeny! ⇒ Object
- #next_weeny! ⇒ Object
- #set(arg, *nums) ⇒ Object
- #teeny ⇒ Object
- #teeny=(i) ⇒ Object
- #to_a ⇒ Object
- #to_s ⇒ Object
- #type ⇒ Object
- #weeny ⇒ Object
- #weeny=(i) ⇒ Object
Constructor Details
#initialize(arg, *nums) ⇒ Version
Returns a new instance of Version.
51 52 53 |
# File 'lib/mega/version.rb', line 51 def initialize( arg, *nums ) set( arg, *nums ) end |
Class Method Details
Instance Method Details
#<=>(other) ⇒ Object
132 133 134 135 136 137 |
# File 'lib/mega/version.rb', line 132 def <=>( other ) return false unless self.class === other n = @num ret = nil; other.instance_eval { ret = (n <=> @num) } ret end |
#==(other) ⇒ Object Also known as: eql?
71 72 73 |
# File 'lib/mega/version.rb', line 71 def ==( other ) @num == other.to_a end |
#dup ⇒ Object
67 68 69 |
# File 'lib/mega/version.rb', line 67 def dup self.class.new( *@nums ) end |
#hash ⇒ Object
76 |
# File 'lib/mega/version.rb', line 76 def hash ; @num.hash ; end |
#inspect ⇒ Object
81 82 83 |
# File 'lib/mega/version.rb', line 81 def inspect "\#<#{self.class} #{to_s}>" end |
#major ⇒ Object
85 |
# File 'lib/mega/version.rb', line 85 def major ; @num[0] ; end |
#major=(i) ⇒ Object
86 |
# File 'lib/mega/version.rb', line 86 def major=( i ) ; @num[0] = i ; end |
#minor ⇒ Object
88 |
# File 'lib/mega/version.rb', line 88 def minor ; @num[1] ; end |
#minor=(i) ⇒ Object
89 |
# File 'lib/mega/version.rb', line 89 def minor=( i ) ; @num[1] = i ; end |
#next_major! ⇒ Object
97 98 99 100 |
# File 'lib/mega/version.rb', line 97 def next_major! (1..last_index).each{ |i| @num[i] = 0 } if last_index > 0 @num[0] += 1 end |
#next_minor! ⇒ Object
102 103 104 105 106 107 |
# File 'lib/mega/version.rb', line 102 def next_minor! (2..last_index).each{ |i| @num[i] = 0 } if last_index > 1 if @num[1] @num[1] += 1 end end |
#next_teeny! ⇒ Object
109 110 111 112 113 114 |
# File 'lib/mega/version.rb', line 109 def next_teeny! (3..last_index).each{ |i| @num[i] = 0 } if last_index > 2 if @num[2] @num[2] += 1 end end |
#next_weeny! ⇒ Object
116 117 118 119 120 121 |
# File 'lib/mega/version.rb', line 116 def next_weeny! #(4..last_index).each{ |i| @num[i] = 0 } if last_index > 3 if @num[3] @num[3] += 1 end end |
#set(arg, *nums) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/mega/version.rb', line 55 def set( arg, *nums ) if String === arg then unless m = VERSION_EXP.match( arg ) then raise ArgumentError, "wrong version string format '#{arg}'" end @num = m[0].split('.').collect {|i| i.to_i } else @num = [ arg, *(nums || []) ] #@num.unshift arg end end |
#teeny ⇒ Object
91 |
# File 'lib/mega/version.rb', line 91 def teeny ; @num[2] ; end |
#teeny=(i) ⇒ Object
92 |
# File 'lib/mega/version.rb', line 92 def teeny=( i ) ; @num[2] = i ; end |
#to_a ⇒ Object
79 |
# File 'lib/mega/version.rb', line 79 def to_a ; @num.dup ; end |
#to_s ⇒ Object
78 |
# File 'lib/mega/version.rb', line 78 def to_s ; @num.join '.' ; end |
#type ⇒ Object
123 124 125 126 127 128 129 130 |
# File 'lib/mega/version.rb', line 123 def type case last_index when 0 then :major when 1 then :minor when 2 then :teeny when 3 then :weeny end end |
#weeny ⇒ Object
94 |
# File 'lib/mega/version.rb', line 94 def weeny ; @num[3] ; end |
#weeny=(i) ⇒ Object
95 |
# File 'lib/mega/version.rb', line 95 def weeny=( i ) ; @num[3] = i ; end |