Class: Gem::VersionImproved

Inherits:
Version
  • Object
show all
Defined in:
lib/rake/helpers/gemversion.rb

Instance Method Summary collapse

Constructor Details

#initialize(version) ⇒ VersionImproved



5
6
7
8
9
10
11
12
# File 'lib/rake/helpers/gemversion.rb', line 5

def initialize(version)
    # dup version

    # to avoid error on earlier versions of Gem::Version with frozen strings

    super(version.nil? ? version : version.dup)
    @version = '0.0.0.0' if @version.empty?
    # avoid bug when Gem::Version <= 1.3.7

    @segments = nil
end

Instance Method Details

#buildObject

The build for this version (e.g. 1.2.0.a -> 1.2.1). Non-prerelease versions return themselves.



31
32
33
34
35
36
37
38
# File 'lib/rake/helpers/gemversion.rb', line 31

def build
    return self unless prerelease?

    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments[-1] = segments[-1].succ
    self.class.new segments.join('.')
end

#build_numObject

The build number



42
43
44
45
46
47
48
# File 'lib/rake/helpers/gemversion.rb', line 42

def build_num
    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments.pop while segments.size > 4

    segments.size == 4 ? segments[-1] : nil
end

#commaObject



77
78
79
# File 'lib/rake/helpers/gemversion.rb', line 77

def comma
    segments.dup.join(',')
end

#majorObject



61
62
63
64
65
66
67
# File 'lib/rake/helpers/gemversion.rb', line 61

def major
    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments.pop while segments.size > 1

    segments[-1]
end

#minorObject



69
70
71
72
73
74
75
# File 'lib/rake/helpers/gemversion.rb', line 69

def minor
    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments.pop while segments.size > 2

    segments.size == 2 ? segments[-1] : nil
end

#prev_releaseObject

Return a new version object where the previous to the last revision number is one lower (e.g., 5.3.1 => 5.2).

Pre-release (alpha) parts, e.g, 5.3.1.b.2 => 5.2, are ignored.



19
20
21
22
23
24
25
26
# File 'lib/rake/helpers/gemversion.rb', line 19

def prev_release
    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments.pop if segments.size > 1

    segments[-1] = segments[-1].to_i.pred.to_s
    self.class.new segments.join(".")
end

#release_numObject

Returns release only part (e.g. 1.2.3.4 -> 3, 1.2.3 -> 2)



53
54
55
56
57
58
59
# File 'lib/rake/helpers/gemversion.rb', line 53

def release_num
    segments = self.segments.dup
    segments.pop while segments.any? { |s| String === s }
    segments.pop if segments.size > 1

    segments[-1]
end