Class: Tins::StringVersion::Version
- Includes:
- Comparable
- Defined in:
- lib/tins/string_version.rb
Instance Method Summary collapse
- #<=>(other) ⇒ Object
- #==(other) ⇒ Object
- #[](index) ⇒ Object
- #[]=(index, value) ⇒ Object
- #array ⇒ Object (also: #to_a)
- #build ⇒ Object
- #build=(number) ⇒ Object
-
#initialize(string) ⇒ Version
constructor
A new instance of Version.
- #major ⇒ Object
- #major=(number) ⇒ Object
- #minor ⇒ Object
- #minor=(number) ⇒ Object
- #pred! ⇒ Object
- #revision ⇒ Object
- #revision=(number) ⇒ Object
- #succ! ⇒ Object
- #to_s ⇒ Object (also: #inspect)
- #version ⇒ Object
Constructor Details
#initialize(string) ⇒ Version
Returns a new instance of Version.
8 9 10 11 |
# File 'lib/tins/string_version.rb', line 8 def initialize(string) string =~ /\A[\.\d]+\Z/ or raise ArgumentError, "#{string.inspect} isn't a version number" @version = string.frozen? ? string.dup : string end |
Instance Method Details
#<=>(other) ⇒ Object
67 68 69 70 71 72 |
# File 'lib/tins/string_version.rb', line 67 def <=>(other) pairs = array.zip(other.array) pairs.map! { |a, b| [ a.nil? ? 0 : a, b.nil? ? 0 : b ] } a, b = pairs.transpose a <=> b end |
#==(other) ⇒ Object
74 75 76 |
# File 'lib/tins/string_version.rb', line 74 def ==(other) (self <=> other).zero? end |
#[](index) ⇒ Object
45 46 47 |
# File 'lib/tins/string_version.rb', line 45 def [](index) array[index] end |
#[]=(index, value) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/tins/string_version.rb', line 49 def []=(index, value) value = value.to_i value >= 0 or raise ArgumentError, "version numbers can't contain negative numbers like #{value}" a = array @array = nil a[index] = value a.map! { |x| x.nil? ? 0 : x } @version.replace a * '.' end |
#array ⇒ Object Also known as: to_a
78 79 80 |
# File 'lib/tins/string_version.rb', line 78 def array @version.split('.').map(&:to_i) end |
#build ⇒ Object
29 30 31 |
# File 'lib/tins/string_version.rb', line 29 def build self[2] end |
#build=(number) ⇒ Object
33 34 35 |
# File 'lib/tins/string_version.rb', line 33 def build=(number) self[2] = number end |
#major ⇒ Object
13 14 15 |
# File 'lib/tins/string_version.rb', line 13 def major self[0] end |
#major=(number) ⇒ Object
17 18 19 |
# File 'lib/tins/string_version.rb', line 17 def major=(number) self[0] = number end |
#minor ⇒ Object
21 22 23 |
# File 'lib/tins/string_version.rb', line 21 def minor self[1] end |
#minor=(number) ⇒ Object
25 26 27 |
# File 'lib/tins/string_version.rb', line 25 def minor=(number) self[1] = number end |
#pred! ⇒ Object
63 64 65 |
# File 'lib/tins/string_version.rb', line 63 def pred! self[-1] -= 1 end |
#revision ⇒ Object
37 38 39 |
# File 'lib/tins/string_version.rb', line 37 def revision self[3] end |
#revision=(number) ⇒ Object
41 42 43 |
# File 'lib/tins/string_version.rb', line 41 def revision=(number) self[3] = number end |
#succ! ⇒ Object
59 60 61 |
# File 'lib/tins/string_version.rb', line 59 def succ! self[-1] += 1 end |
#to_s ⇒ Object Also known as: inspect
84 85 86 |
# File 'lib/tins/string_version.rb', line 84 def to_s @version end |
#version ⇒ Object
90 91 92 |
# File 'lib/tins/string_version.rb', line 90 def version self end |