Class: Semverify::IncrementableSemver
- Defined in:
- lib/semverify/incrementable_semver.rb
Overview
A Semverify::Semver with additional constraints on the pre-release part of the version
A IncrementableSemver is valid if one of the two following conditions is met:
- The pre-release part is empty
- The pre-release part is composed of two dot-separated identifiers:
- the first being a String representing the pre-release type (e.g. 'alpha', 'beta', etc.). The default pre-release type is 'pre'
- the second being an Integer representing the pre-release sequence number (starting at 1)
Valid versions with pre-release parts: 1.2.3-alpha.1
, 1.2.3-beta.2
, 1.2.3-pre.3
Constant Summary collapse
- DEFAULT_PRE_TYPE =
The default pre-release identifier
'pre'
Instance Attribute Summary
Attributes inherited from Semver
#build_metadata, #major, #minor, #patch, #pre_release, #pre_release_identifiers, #version
Instance Method Summary collapse
-
#next_major(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the major version.
-
#next_minor(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the minor version.
-
#next_patch(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the patch version.
-
#next_pre(pre_type: nil, build_metadata: nil) ⇒ IncrementableSemver
Increment the pre_release part of the version.
-
#next_release(build_metadata: nil) ⇒ IncrementableSemver
Drop the pre-release part of the version.
-
#pre_number ⇒ Integer
The pre-release sequence number.
-
#pre_type ⇒ String
The pre-release type (for example, 'alpha', 'beta', 'pre', etc.).
-
#valid? ⇒ Boolean
Create a new IncrementableSemver object.
Methods inherited from Semver
#<=>, #==, #initialize, #to_s
Constructor Details
This class inherits a constructor from Semverify::Semver
Instance Method Details
#next_major(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the major version
53 54 55 56 57 58 59 |
# File 'lib/semverify/incrementable_semver.rb', line 53 def next_major(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) version_string = "#{major.to_i + 1}.0.0" version_string += "-#{pre_type}.1" if pre = self. if .nil? version_string += "+#{build_metadata}" unless .empty? IncrementableSemver.new(version_string) end |
#next_minor(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the minor version
68 69 70 71 72 73 74 |
# File 'lib/semverify/incrementable_semver.rb', line 68 def next_minor(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) version_string = "#{major}.#{minor.to_i + 1}.0" version_string += "-#{pre_type}.1" if pre = self. if .nil? version_string += "+#{build_metadata}" unless .empty? IncrementableSemver.new(version_string) end |
#next_patch(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) ⇒ IncrementableSemver
Increment the patch version
83 84 85 86 87 88 89 |
# File 'lib/semverify/incrementable_semver.rb', line 83 def next_patch(pre: false, pre_type: DEFAULT_PRE_TYPE, build_metadata: nil) version_string = "#{major}.#{minor}.#{patch.to_i + 1}" version_string += "-#{pre_type}.1" if pre = self. if .nil? version_string += "+#{build_metadata}" unless .empty? IncrementableSemver.new(version_string) end |
#next_pre(pre_type: nil, build_metadata: nil) ⇒ IncrementableSemver
Increment the pre_release part of the version
98 99 100 101 102 103 104 105 |
# File 'lib/semverify/incrementable_semver.rb', line 98 def next_pre(pre_type: nil, build_metadata: nil) assert_is_a_pre_release_version version_string = "#{major}.#{minor}.#{patch}" version_string += next_pre_part(pre_type) ||= self. version_string += "+#{build_metadata}" unless .empty? IncrementableSemver.new(version_string) end |
#next_release(build_metadata: nil) ⇒ IncrementableSemver
Drop the pre-release part of the version
115 116 117 118 119 120 121 |
# File 'lib/semverify/incrementable_semver.rb', line 115 def next_release(build_metadata: nil) assert_is_a_pre_release_version version_string = "#{major}.#{minor}.#{patch}" ||= self. version_string += "+#{build_metadata}" unless .empty? IncrementableSemver.new(version_string) end |
#pre_number ⇒ Integer
The pre-release sequence number
The pre-release sequence number starts at 1 for each pre-release type.
143 144 145 |
# File 'lib/semverify/incrementable_semver.rb', line 143 def pre_number pre_release_identifiers[1] end |
#pre_type ⇒ String
The pre-release type (for example, 'alpha', 'beta', 'pre', etc.)
130 131 132 |
# File 'lib/semverify/incrementable_semver.rb', line 130 def pre_type pre_release_identifiers[0] end |
#valid? ⇒ Boolean
Create a new IncrementableSemver object
32 33 34 35 36 37 38 39 40 41 |
# File 'lib/semverify/incrementable_semver.rb', line 32 def valid? super && ( pre_release.empty? || ( pre_release_identifiers.size == 2 && pre_type.is_a?(String) && pre_number.is_a?(Integer) ) ) end |