semver2 3.0.1 → 3.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. data/.semver +5 -5
  2. data/README.md +1 -1
  3. data/bin/semver +0 -0
  4. data/lib/semver.rb +37 -0
  5. metadata +3 -3
data/.semver CHANGED
@@ -1,5 +1,5 @@
1
- ---
2
- :major: 3
3
- :minor: 0
4
- :patch: 1
5
- :special: ""
1
+ ---
2
+ :major: 3
3
+ :minor: 1
4
+ :patch: 0
5
+ :special: ''
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- SemVer 3.0.0-rc.1 gem, following semver.org 2.0.0-rc.1
1
+ SemVer2 3.0.x gem, following semver.org 2.0.0-rc.1
2
2
  ======
3
3
 
4
4
  quickstart on the command line
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.1
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: 2012-02-13 00:00:00.000000000Z
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.15
48
+ rubygems_version: 1.8.24
49
49
  signing_key:
50
50
  specification_version: 3
51
51
  summary: Semantic Versioning