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\-\.]+)?)?)?'
- ANCHORED_SEMANTIC_VERSION_PATTERN =
/\A\s*(#{SEMVER_PATTERN})*\s*\z/
Constant Summary collapse
- VERSION_PATTERN =
Override the constants defined by the superclass to add Semantic Versioning prerelease support (with a dash). E.g.: 1.0.0-alpha1
For more info, see: semver.org
'[0-9]+(\.[0-9a-zA-Z\-]+)*'
- 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
Instance Attribute Summary collapse
-
#head ⇒ Bool
(also: #head?)
Whether the version represents the ‘head` of repository.
Attributes inherited from Pod::Vendor::Gem::Version
Semantic Versioning collapse
-
#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.
-
#to_s ⇒ String
A string representation that indicates if the version is head.
Methods inherited from Pod::Vendor::Gem::Version
#<=>, #bump, create, #eql?, #hash, #init_with, #marshal_dump, #marshal_load, #optimistic_recommendation, #pretty_print, #release, #segments, #yaml_initialize
Constructor Details
#initialize(version) ⇒ Version
The ‘from` part of the regular expression should be remove in CocoaPods 1.0.0.
Returns a new instance of Version.
52 53 54 55 56 57 58 59 60 61 |
# File 'lib/cocoapods-core/version.rb', line 52 def initialize(version) if version.is_a?(Version) && version.head? version = version.version @head = true elsif version.is_a?(String) && version =~ /HEAD (based on|from) (.*)/ version = Regexp.last_match[2] @head = true end super(version) end |
Instance Attribute Details
#head ⇒ Bool Also known as: head?
Returns whether the version represents the ‘head` of repository.
43 44 45 |
# File 'lib/cocoapods-core/version.rb', line 43 def head @head end |
Class Method Details
.correct?(version) ⇒ Bool
Returns Whether a string representation is correct.
99 100 101 |
# File 'lib/cocoapods-core/version.rb', line 99 def self.correct?(version) version.to_s =~ ANCHORED_VERSION_PATTERN end |
Instance Method Details
#inspect ⇒ String
Returns a string representation suitable for debugging.
82 83 84 |
# File 'lib/cocoapods-core/version.rb', line 82 def inspect "<#{self.class} version=#{version}>" end |
#major ⇒ Fixnum
Returns The semver major identifier.
123 124 125 |
# File 'lib/cocoapods-core/version.rb', line 123 def major segments[0] end |
#minor ⇒ Fixnum
Returns The semver minor identifier.
129 130 131 |
# File 'lib/cocoapods-core/version.rb', line 129 def minor segments[1] || 0 end |
#patch ⇒ Fixnum
Returns The semver patch identifier.
135 136 137 |
# File 'lib/cocoapods-core/version.rb', line 135 def patch segments[2] || 0 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.
93 94 95 |
# File 'lib/cocoapods-core/version.rb', line 93 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).
117 118 119 |
# File 'lib/cocoapods-core/version.rb', line 117 def semantic? version.to_s =~ ANCHORED_SEMANTIC_VERSION_PATTERN end |
#to_s ⇒ String
Adding the head information to the string representation creates issues (see Dependency#requirement).
The raw version string is still accessible with the Pod::Vendor::Gem::Version#version method.
Returns a string representation that indicates if the version is head.
76 77 78 |
# File 'lib/cocoapods-core/version.rb', line 76 def to_s head? ? "HEAD based on #{super}" : super end |