semver2 3.0.1 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.semver +5 -5
- data/README.md +1 -1
- data/bin/semver +0 -0
- data/lib/semver.rb +37 -0
- metadata +3 -3
data/.semver
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
---
|
2
|
-
:major: 3
|
3
|
-
:minor:
|
4
|
-
:patch:
|
5
|
-
:special:
|
1
|
+
---
|
2
|
+
:major: 3
|
3
|
+
:minor: 1
|
4
|
+
:patch: 0
|
5
|
+
:special: ''
|
data/README.md
CHANGED
data/bin/semver
CHANGED
File without changes
|
data/lib/semver.rb
CHANGED
@@ -100,4 +100,41 @@ class SemVer
|
|
100
100
|
end
|
101
101
|
|
102
102
|
include Comparable
|
103
|
+
|
104
|
+
# Parses a semver from a string and format.
|
105
|
+
def self.parse(version_string, format = nil, allow_missing = true)
|
106
|
+
format ||= TAG_FORMAT
|
107
|
+
regex_str = Regexp.escape format
|
108
|
+
|
109
|
+
# Convert all the format characters to named capture groups
|
110
|
+
regex_str = regex_str.gsub('%M', '(?<major>\d+)').
|
111
|
+
gsub('%m', '(?<minor>\d+)').
|
112
|
+
gsub('%p', '(?<patch>\d+)').
|
113
|
+
gsub('%s', '(?:-(?<special>[A-Za-z][0-9A-Za-z\.]+))?')
|
114
|
+
|
115
|
+
regex = Regexp.new(regex_str)
|
116
|
+
match = regex.match version_string
|
117
|
+
|
118
|
+
if match
|
119
|
+
major = minor = patch = nil
|
120
|
+
special = ''
|
121
|
+
|
122
|
+
# Extract out the version parts
|
123
|
+
major = match[:major].to_i if match.names.include? 'major'
|
124
|
+
minor = match[:minor].to_i if match.names.include? 'minor'
|
125
|
+
patch = match[:patch].to_i if match.names.include? 'patch'
|
126
|
+
special = match[:special] || '' if match.names.include? 'special'
|
127
|
+
|
128
|
+
# Failed parse if major, minor, or patch wasn't found
|
129
|
+
# and allow_missing is false
|
130
|
+
return nil if !allow_missing and [major, minor, patch].any? {|x| x.nil? }
|
131
|
+
|
132
|
+
# Otherwise, allow them to default to zero
|
133
|
+
major ||= 0
|
134
|
+
minor ||= 0
|
135
|
+
patch ||= 0
|
136
|
+
|
137
|
+
SemVer.new major, minor, patch, special
|
138
|
+
end
|
139
|
+
end
|
103
140
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: semver2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0
|
4
|
+
version: 3.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2013-02-04 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: maintain versions as per http://semver.org
|
16
16
|
email: henrik@haf.se
|
@@ -45,7 +45,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
45
45
|
version: '0'
|
46
46
|
requirements: []
|
47
47
|
rubyforge_project:
|
48
|
-
rubygems_version: 1.8.
|
48
|
+
rubygems_version: 1.8.24
|
49
49
|
signing_key:
|
50
50
|
specification_version: 3
|
51
51
|
summary: Semantic Versioning
|