Class: Pod::Version
- Inherits:
-
Pod::Vendor::Gem::Version
- Object
- Pod::Vendor::Gem::Version
- Pod::Version
- Defined in:
- lib/cocoapods-core/version.rb
Overview
The Version class stores information about the version of a Specification.
It is based on the RubyGems class adapted to support head information.
### From RubyGems:
The Version class processes string versions into comparable values. A version string should normally be a series of numbers separated by periods. Each part (digits separated by periods) is considered its own number, and these are used for sorting. So for instance, 3.10 sorts higher than 3.2 because ten is greater than two.
If any part contains letters (currently only a-z are supported) then that version is considered prerelease. Versions with a prerelease part in the Nth part sort less than versions with N-1 parts. Prerelease parts are sorted alphabetically using the normal Ruby string sorting rules. If a prerelease part contains both letters and numbers, it will be broken into multiple parts to provide expected sort behavior (1.0.a10 becomes 1.0.a.10, and is greater than 1.0.a9).
Prereleases sort between real releases (newest to oldest):
-
1.0
-
1.0.b1
-
1.0.a.2
-
0.9
Semantic Versioning collapse
- SEMVER_PATTERN =
"[0-9]+(\\.[0-9]+(\\.[0-9]+(-[0-9A-Za-z\\-\\.]+)?#{METADATA_PATTERN}?)?)?"
- ANCHORED_SEMANTIC_VERSION_PATTERN =
/\A\s*(#{SEMVER_PATTERN})*\s*\z/
Constant Summary collapse
- METADATA_PATTERN =
Override the constants defined by the superclass to add:
-
Semantic Versioning prerelease support (with a dash). E.g.: 1.0.0-alpha1
-
Semantic Versioning metadata support (with a ) E.g: 1.0.096ef7ed
For more info, see: semver.org
-
'(\+[0-9a-zA-Z\-\.]+)'
- VERSION_PATTERN =
"[0-9]+(\\.[0-9a-zA-Z\\-]+)*#{METADATA_PATTERN}?"
- ANCHORED_VERSION_PATTERN =
/\A\s*(#{VERSION_PATTERN})*\s*\z/
- ZERO =
An instance that represents version 0.
new('0')
Constants inherited from Pod::Vendor::Gem::Version
Pod::Vendor::Gem::Version::Requirement
Semantic Versioning collapse
-
#<=(other) ⇒ Boolean
Compares the versions for equality.
-
#<=>(other) ⇒ Fixnum
Compares the versions for sorting.
-
#==(other) ⇒ Boolean
Compares the versions for equality.
-
#>=(other) ⇒ Boolean
Compares the versions for equality.
-
#major ⇒ Fixnum
The semver major identifier.
-
#minor ⇒ Fixnum
The semver minor identifier.
-
#patch ⇒ Fixnum
The semver patch identifier.
-
#semantic? ⇒ Bool
Whether the version conforms to the Semantic Versioning specification (2.0.0-rc.1).
Class Method Summary collapse
-
.correct?(version) ⇒ Bool
Whether a string representation is correct.
Instance Method Summary collapse
-
#initialize(version) ⇒ Version
constructor
A new instance of Version.
-
#inspect ⇒ String
A string representation suitable for debugging.
-
#prerelease? ⇒ Boolean
Indicates whether or not the version is a prerelease.
Methods inherited from Pod::Vendor::Gem::Version
#approximate_recommendation, #bump, create, #encode_with, #eql?, #hash, #init_with, #marshal_dump, #marshal_load, new, #pretty_print, #release, #segments, #to_yaml_properties, #version, #yaml_initialize
Constructor Details
#initialize(version) ⇒ Version
Remove the ‘HEAD` code once everyone has migrated past 1.0.
Returns a new instance of Version.
48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/cocoapods-core/version.rb', line 48 def initialize(version) if version.is_a?(String) && version =~ /HEAD based on (.*)/ CoreUI.warn "Ignoring obsolete HEAD specifier in `#{version}`" version = Regexp.last_match[1] end raise ArgumentError, "Malformed version number string #{version}" unless self.class.correct?(version) @version = version.to_s.strip end |
Class Method Details
.correct?(version) ⇒ Bool
Returns Whether a string representation is correct.
83 84 85 |
# File 'lib/cocoapods-core/version.rb', line 83 def self.correct?(version) version.to_s =~ ANCHORED_VERSION_PATTERN end |
Instance Method Details
#<=(other) ⇒ Boolean
Attempts to compare something that’s not a Pod::Version return nil
Compares the versions for equality.
180 181 182 183 |
# File 'lib/cocoapods-core/version.rb', line 180 def <=(other) comparison = compare_segments(other) comparison <= 0 end |
#<=>(other) ⇒ Fixnum
Attempts to compare something that’s not a Pod::Version return nil
Compares the versions for sorting.
133 134 135 136 |
# File 'lib/cocoapods-core/version.rb', line 133 def <=>(other) comparison = compare_segments(other) comparison == 0 ? version <=> other.version : comparison end |
#==(other) ⇒ Boolean
Attempts to compare something that’s not a Pod::Version return nil
Compares the versions for equality.
149 150 151 |
# File 'lib/cocoapods-core/version.rb', line 149 def ==(other) compare_segments(other) == 0 end |
#>=(other) ⇒ Boolean
Attempts to compare something that’s not a Pod::Version return nil
Compares the versions for equality.
164 165 166 167 |
# File 'lib/cocoapods-core/version.rb', line 164 def >=(other) comparison = compare_segments(other) comparison >= 0 end |
#inspect ⇒ String
Returns a string representation suitable for debugging.
66 67 68 |
# File 'lib/cocoapods-core/version.rb', line 66 def inspect "<#{self.class} version=#{version}>" end |
#major ⇒ Fixnum
Returns The semver major identifier.
107 108 109 |
# File 'lib/cocoapods-core/version.rb', line 107 def major numeric_segments[0].to_i end |
#minor ⇒ Fixnum
Returns The semver minor identifier.
113 114 115 |
# File 'lib/cocoapods-core/version.rb', line 113 def minor numeric_segments[1].to_i end |
#patch ⇒ Fixnum
Returns The semver patch identifier.
119 120 121 |
# File 'lib/cocoapods-core/version.rb', line 119 def patch numeric_segments[2].to_i end |
#prerelease? ⇒ Boolean
Prerelease Pods can contain a hyphen and/or a letter (conforms to Semantic Versioning instead of RubyGems).
For more info, see: semver.org
Returns indicates whether or not the version is a prerelease.
77 78 79 |
# File 'lib/cocoapods-core/version.rb', line 77 def prerelease? @prerelease ||= @version =~ /[a-zA-Z\-]/ end |
#semantic? ⇒ Bool
This comparison is lenient.
It doesn’t support build identifiers.
Returns Whether the version conforms to the Semantic Versioning specification (2.0.0-rc.1).
101 102 103 |
# File 'lib/cocoapods-core/version.rb', line 101 def semantic? version.to_s =~ ANCHORED_SEMANTIC_VERSION_PATTERN end |