naturalsorter 1.0.1 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +2 -2
- data/lib/naturalsorter/version.rb +1 -1
- data/lib/naturalsorter.rb +2 -54
- data/lib/version_tag_recognizer.rb +174 -0
- data/lib/versioncmp.rb +12 -14
- data/spec/version_tag_recognizer_spec.rb +339 -0
- data/spec/versioncmp_spec.rb +4 -0
- metadata +5 -5
- data/lib/release_recognizer.rb +0 -93
- data/spec/release_recognizer_spec.rb +0 -240
data/README.markdown
CHANGED
@@ -76,7 +76,7 @@ because '~>1.1' doesn't fit anymore the newest version.
|
|
76
76
|
|
77
77
|
You should add this line to your Gemfile
|
78
78
|
|
79
|
-
`gem 'naturalsorter', '
|
79
|
+
`gem 'naturalsorter', '2.0.0'`
|
80
80
|
|
81
81
|
and run this command in your app root directory
|
82
82
|
|
@@ -88,7 +88,7 @@ After the installation you can use it like this:
|
|
88
88
|
|
89
89
|
`Naturalsorter::Sorter.sort(["a400", "a5", "a1"], true)`
|
90
90
|
|
91
|
-
it will return the array ["a1", "a5", "a400"].
|
91
|
+
it will return the array ["a1", "a5", "a400"]. The second paramter is for "caseinsesitive".
|
92
92
|
|
93
93
|
If you have more advanced objects you want to sort, you should use the second method. Assume you have a Class User with 3 attributes: "firstname", "lastname", "age" and you want to sort an array of class Users by "firstname".
|
94
94
|
|
data/lib/naturalsorter.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require "naturalsorter/version"
|
2
2
|
require "natcmp"
|
3
3
|
require "versioncmp"
|
4
|
-
require "
|
4
|
+
require "version_tag_recognizer"
|
5
5
|
|
6
6
|
# naturalsorter.rb
|
7
7
|
#
|
@@ -158,61 +158,9 @@ module Naturalsorter
|
|
158
158
|
end
|
159
159
|
|
160
160
|
def self.replace_minimum_stability val
|
161
|
-
|
161
|
+
VersionTagRecognizer.remove_minimum_stability val
|
162
162
|
end
|
163
163
|
|
164
164
|
end
|
165
|
-
|
166
|
-
class ReleaseRecognizer
|
167
|
-
|
168
|
-
def self.value_for( value )
|
169
|
-
ReleaseRecognizer.value_for value
|
170
|
-
end
|
171
|
-
|
172
|
-
def self.compare_scopes( a, b)
|
173
|
-
ReleaseRecognizer.compare_scopes(a, b)
|
174
|
-
end
|
175
|
-
|
176
|
-
def self.scoped? value
|
177
|
-
ReleaseRecognizer.scoped? value
|
178
|
-
end
|
179
|
-
|
180
|
-
def self.remove_scope value
|
181
|
-
ReleaseRecognizer.remove_scope value
|
182
|
-
end
|
183
|
-
|
184
|
-
def self.stable? value
|
185
|
-
ReleaseRecognizer.stable? value
|
186
|
-
end
|
187
|
-
|
188
|
-
def self.alpha? value
|
189
|
-
ReleaseRecognizer.alpha? value
|
190
|
-
end
|
191
|
-
|
192
|
-
def self.beta? value
|
193
|
-
ReleaseRecognizer.beta? value
|
194
|
-
end
|
195
|
-
|
196
|
-
def self.dev? value
|
197
|
-
ReleaseRecognizer.dev? value
|
198
|
-
end
|
199
|
-
|
200
|
-
def self.rc? value
|
201
|
-
ReleaseRecognizer.rc? value
|
202
|
-
end
|
203
|
-
|
204
|
-
def self.snapshot? value
|
205
|
-
ReleaseRecognizer.snapshot? value
|
206
|
-
end
|
207
|
-
|
208
|
-
def self.pre? value
|
209
|
-
ReleaseRecognizer.pre? value
|
210
|
-
end
|
211
|
-
|
212
|
-
def self.jbossorg? value
|
213
|
-
ReleaseRecognizer.jbossorg? value
|
214
|
-
end
|
215
|
-
|
216
|
-
end
|
217
165
|
|
218
166
|
end
|
@@ -0,0 +1,174 @@
|
|
1
|
+
class VersionTagRecognizer
|
2
|
+
|
3
|
+
A_STABILITY_STABLE = "stable"
|
4
|
+
A_STABILITY_PRE = "pre"
|
5
|
+
A_STABILITY_RC = "RC"
|
6
|
+
A_STABILITY_BETA = "beta"
|
7
|
+
A_STABILITY_ALPHA = "alpha"
|
8
|
+
A_STABILITY_SNAPSHOT = "SNAPSHOT"
|
9
|
+
A_STABILITY_DEV = "dev"
|
10
|
+
|
11
|
+
def self.value_for( value )
|
12
|
+
return 0 if self.dev? value
|
13
|
+
return 2 if self.snapshot? value
|
14
|
+
return 3 if self.alpha? value
|
15
|
+
return 4 if self.beta? value
|
16
|
+
return 5 if self.rc? value
|
17
|
+
return 6 if self.pre? value
|
18
|
+
return 10 if self.stable? value
|
19
|
+
return 1
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.compare_tags( a, b)
|
23
|
+
a_val = self.value_for a
|
24
|
+
b_val = self.value_for b
|
25
|
+
return -1 if a_val < b_val
|
26
|
+
return 1 if a_val > b_val
|
27
|
+
return 0
|
28
|
+
end
|
29
|
+
|
30
|
+
def self.tagged? value
|
31
|
+
self.alpha?(value) or self.beta?(value) or
|
32
|
+
self.dev?(value) or self.rc?(value) or
|
33
|
+
self.snapshot?(value) or self.pre?(value) or
|
34
|
+
self.jbossorg?(value)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.remove_tag value
|
38
|
+
if self.alpha? value
|
39
|
+
new_value = value.gsub(/\.[\w-]*alpha.*$/i, "")
|
40
|
+
return new_value.gsub(/\.[\w-]*a.*$/i, "")
|
41
|
+
elsif self.beta? value
|
42
|
+
new_value = value.gsub(/\.[\w-]*beta.*$/i, "")
|
43
|
+
return new_value.gsub(/\.[\w-]*b.*$/i, "")
|
44
|
+
elsif self.rc? value
|
45
|
+
return value.gsub(/\.[\w-]*rc.*$/i, "")
|
46
|
+
elsif self.pre? value
|
47
|
+
return value.gsub(/\.[\w-]*pre.*$/i, "")
|
48
|
+
elsif self.jbossorg? value
|
49
|
+
return value.gsub(/\.jbossorg.*$/i, "")
|
50
|
+
elsif self.snapshot? value
|
51
|
+
return value.gsub(/\.snapshot.*$/i, "")
|
52
|
+
end
|
53
|
+
return value
|
54
|
+
end
|
55
|
+
|
56
|
+
def self.remove_minimum_stability val
|
57
|
+
if val.match(/@.*$/)
|
58
|
+
val.gsub!(/@.*$/, "")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
def self.does_it_fit_stability?( version_number, stability )
|
63
|
+
if stability.casecmp( A_STABILITY_STABLE ) == 0
|
64
|
+
if self.stable?( version_number )
|
65
|
+
return true
|
66
|
+
end
|
67
|
+
elsif stability.casecmp( A_STABILITY_PRE ) == 0
|
68
|
+
if self.stable?( version_number ) ||
|
69
|
+
self.pre?( version_number )
|
70
|
+
return true
|
71
|
+
end
|
72
|
+
elsif stability.casecmp( A_STABILITY_RC ) == 0
|
73
|
+
if self.stable?( version_number ) ||
|
74
|
+
self.rc?( version_number )
|
75
|
+
return true
|
76
|
+
end
|
77
|
+
elsif stability.casecmp( A_STABILITY_BETA ) == 0
|
78
|
+
if self.stable?( version_number ) ||
|
79
|
+
self.rc?( version_number ) ||
|
80
|
+
self.beta?( version_number )
|
81
|
+
return true
|
82
|
+
end
|
83
|
+
elsif stability.casecmp( A_STABILITY_ALPHA ) == 0
|
84
|
+
if self.stable?( version_number ) ||
|
85
|
+
self.rc?( version_number ) ||
|
86
|
+
self.beta?( version_number ) ||
|
87
|
+
self.alpha?( version_number )
|
88
|
+
return true
|
89
|
+
end
|
90
|
+
elsif stability.casecmp( A_STABILITY_SNAPSHOT ) == 0
|
91
|
+
if self.stable?( version_number ) ||
|
92
|
+
self.rc?( version_number ) ||
|
93
|
+
self.pre?( version_number ) ||
|
94
|
+
self.beta?( version_number ) ||
|
95
|
+
self.alpha?( version_number ) ||
|
96
|
+
self.snapshot?( version_number )
|
97
|
+
return true
|
98
|
+
end
|
99
|
+
elsif stability.casecmp( A_STABILITY_DEV ) == 0
|
100
|
+
return true
|
101
|
+
else
|
102
|
+
return false
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def self.stability_tag_for( version )
|
107
|
+
if version.match(/@.*$/)
|
108
|
+
spliti = version.split("@")
|
109
|
+
return spliti[1]
|
110
|
+
else
|
111
|
+
if self.stable? version
|
112
|
+
return A_STABILITY_STABLE
|
113
|
+
elsif self.pre? version
|
114
|
+
return A_STABILITY_PRE
|
115
|
+
elsif self.rc? version
|
116
|
+
return A_STABILITY_RC
|
117
|
+
elsif self.beta? version
|
118
|
+
return A_STABILITY_BETA
|
119
|
+
elsif self.alpha? version
|
120
|
+
return A_STABILITY_ALPHA
|
121
|
+
elsif self.snapshot? version
|
122
|
+
return A_STABILITY_SNAPSHOT
|
123
|
+
else
|
124
|
+
return A_STABILITY_DEV
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
def self.release? value
|
130
|
+
self.stable? value
|
131
|
+
end
|
132
|
+
|
133
|
+
def self.stable? value
|
134
|
+
if value.match(/.+RELEASE.*/i) or value.match(/.+BUILD.*/i) or
|
135
|
+
value.match(/.+FINAL.*/i) or value.match(/.+SP.*/i) or
|
136
|
+
value.match(/.+GA.*/i)
|
137
|
+
return true
|
138
|
+
end
|
139
|
+
!self.alpha?(value) and !self.beta?(value) and
|
140
|
+
!self.dev?(value) and !self.pre?(value) and
|
141
|
+
!self.rc?(value) and !value.match(/.+SEC.*/i) and
|
142
|
+
!self.snapshot?(value) and !value.match(/.+M.+/i)
|
143
|
+
end
|
144
|
+
|
145
|
+
def self.alpha? value
|
146
|
+
return false if self.beta? value
|
147
|
+
value.match(/.*alpha.*/i) or value.match(/.+a.*/i)
|
148
|
+
end
|
149
|
+
|
150
|
+
def self.beta? value
|
151
|
+
value.match(/.*beta.*/i) or value.match(/.+b.*/i)
|
152
|
+
end
|
153
|
+
|
154
|
+
def self.dev? value
|
155
|
+
value.match(/.*dev.*/i)
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.rc? value
|
159
|
+
value.match(/.*rc.*/i)
|
160
|
+
end
|
161
|
+
|
162
|
+
def self.snapshot? value
|
163
|
+
value.match(/.+SNAPSHOT.*/i)
|
164
|
+
end
|
165
|
+
|
166
|
+
def self.pre? value
|
167
|
+
value.match(/.*pre.*$/i)
|
168
|
+
end
|
169
|
+
|
170
|
+
def self.jbossorg? value
|
171
|
+
value.match(/.*jbossorg.*$/i)
|
172
|
+
end
|
173
|
+
|
174
|
+
end
|
data/lib/versioncmp.rb
CHANGED
@@ -78,19 +78,21 @@ class Versioncmp
|
|
78
78
|
return -1;
|
79
79
|
end
|
80
80
|
end
|
81
|
-
result = Versioncmp.
|
81
|
+
result = Versioncmp.check_for_tags(a, b)
|
82
82
|
return result
|
83
83
|
end
|
84
84
|
|
85
|
-
|
85
|
+
# Tags are RC, alpha, beta, dev and so on.
|
86
|
+
#
|
87
|
+
def self.check_for_tags(a, b)
|
86
88
|
big = String.new(a)
|
87
89
|
small = String.new(b)
|
88
90
|
if (a.length() < b.length())
|
89
91
|
big = String.new(b)
|
90
92
|
small = String.new(a)
|
91
93
|
end
|
92
|
-
if (
|
93
|
-
big_without_scope =
|
94
|
+
if (VersionTagRecognizer.tagged?(big))
|
95
|
+
big_without_scope = VersionTagRecognizer.remove_tag big
|
94
96
|
if (Versioncmp.compare_string(big_without_scope, small) == 0)
|
95
97
|
return Versioncmp.compare_string_length(a, b)
|
96
98
|
end
|
@@ -99,11 +101,11 @@ class Versioncmp
|
|
99
101
|
end
|
100
102
|
|
101
103
|
def self.double_scope_checker(a, b)
|
102
|
-
if
|
103
|
-
a_without_scope =
|
104
|
-
b_without_scope =
|
104
|
+
if VersionTagRecognizer.tagged?(a) && VersionTagRecognizer.tagged?(b)
|
105
|
+
a_without_scope = VersionTagRecognizer.remove_tag a
|
106
|
+
b_without_scope = VersionTagRecognizer.remove_tag b
|
105
107
|
if a_without_scope.eql? b_without_scope
|
106
|
-
return
|
108
|
+
return VersionTagRecognizer.compare_tags(a, b)
|
107
109
|
end
|
108
110
|
end
|
109
111
|
0
|
@@ -132,7 +134,7 @@ class Versioncmp
|
|
132
134
|
def self.pre_process val
|
133
135
|
a = replace_x_dev val
|
134
136
|
replace_leading_v( a )
|
135
|
-
|
137
|
+
VersionTagRecognizer.remove_minimum_stability( a )
|
136
138
|
a
|
137
139
|
end
|
138
140
|
|
@@ -154,11 +156,7 @@ class Versioncmp
|
|
154
156
|
end
|
155
157
|
end
|
156
158
|
|
157
|
-
|
158
|
-
if val.match(/@.*$/)
|
159
|
-
val.gsub!(/@.*$/, "")
|
160
|
-
end
|
161
|
-
end
|
159
|
+
|
162
160
|
|
163
161
|
def self.check_jquery_versioning(part1, part2)
|
164
162
|
# --- START ---- special case for awesome jquery shitty verison numbers
|
@@ -0,0 +1,339 @@
|
|
1
|
+
require "naturalsorter"
|
2
|
+
|
3
|
+
describe VersionTagRecognizer do
|
4
|
+
|
5
|
+
it "release? is true" do
|
6
|
+
VersionTagRecognizer.release?("1.1").should be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it "release? is true" do
|
10
|
+
VersionTagRecognizer.release?("1.0.0").should be_true
|
11
|
+
end
|
12
|
+
|
13
|
+
it "release? is true" do
|
14
|
+
VersionTagRecognizer.release?("1").should be_true
|
15
|
+
end
|
16
|
+
|
17
|
+
it "release? is true" do
|
18
|
+
VersionTagRecognizer.release?("3.3.2.GA").should be_true
|
19
|
+
end
|
20
|
+
|
21
|
+
it "release? is true" do
|
22
|
+
VersionTagRecognizer.release?("4.1.5.SP1").should be_true
|
23
|
+
end
|
24
|
+
|
25
|
+
it "release? is true" do
|
26
|
+
VersionTagRecognizer.release?("3.1.0.RELEASE").should be_true
|
27
|
+
end
|
28
|
+
|
29
|
+
it "release? is true" do
|
30
|
+
VersionTagRecognizer.release?("3.2.0.BUILD").should be_true
|
31
|
+
end
|
32
|
+
|
33
|
+
it "release? is true" do
|
34
|
+
VersionTagRecognizer.release?("3.2.0buiLd").should be_true
|
35
|
+
end
|
36
|
+
|
37
|
+
it "release? is true" do
|
38
|
+
VersionTagRecognizer.release?("3.2.0.Final").should be_true
|
39
|
+
end
|
40
|
+
|
41
|
+
it "release? is true" do
|
42
|
+
VersionTagRecognizer.release?("3.2.0FINAL").should be_true
|
43
|
+
end
|
44
|
+
|
45
|
+
it "release? is false" do
|
46
|
+
VersionTagRecognizer.release?("1.1.pre").should be_false
|
47
|
+
end
|
48
|
+
|
49
|
+
it "release? is false" do
|
50
|
+
VersionTagRecognizer.release?("2.5.6.SEC03").should be_false
|
51
|
+
end
|
52
|
+
|
53
|
+
it "release? is false" do
|
54
|
+
VersionTagRecognizer.release?("2.3.8.pre1").should be_false
|
55
|
+
end
|
56
|
+
|
57
|
+
it "release? is false" do
|
58
|
+
VersionTagRecognizer.release?("2.3.9.pre").should be_false
|
59
|
+
end
|
60
|
+
|
61
|
+
it "release? is false" do
|
62
|
+
VersionTagRecognizer.release?("3.0.0.beta4").should be_false
|
63
|
+
end
|
64
|
+
|
65
|
+
it "release? is false" do
|
66
|
+
VersionTagRecognizer.release?("3.0.0.BETA4").should be_false
|
67
|
+
end
|
68
|
+
|
69
|
+
it "release? is false" do
|
70
|
+
VersionTagRecognizer.release?("3.0.0.beta").should be_false
|
71
|
+
end
|
72
|
+
|
73
|
+
it "release? is false" do
|
74
|
+
VersionTagRecognizer.release?("3.0.0.rc").should be_false
|
75
|
+
end
|
76
|
+
|
77
|
+
it "release? is false" do
|
78
|
+
VersionTagRecognizer.release?("3.0.0.rc2").should be_false
|
79
|
+
end
|
80
|
+
|
81
|
+
it "release? is false" do
|
82
|
+
VersionTagRecognizer.release?("3.0.0.RC2").should be_false
|
83
|
+
end
|
84
|
+
|
85
|
+
it "release? is false" do
|
86
|
+
VersionTagRecognizer.release?("2.0.x-dev").should be_false
|
87
|
+
end
|
88
|
+
|
89
|
+
it "release? is false" do
|
90
|
+
VersionTagRecognizer.release?("2.0.x-DEV").should be_false
|
91
|
+
end
|
92
|
+
|
93
|
+
it "release? is false" do
|
94
|
+
VersionTagRecognizer.release?("1.8b1").should be_false
|
95
|
+
end
|
96
|
+
|
97
|
+
it "release? is false" do
|
98
|
+
VersionTagRecognizer.release?("1.8B1").should be_false
|
99
|
+
end
|
100
|
+
|
101
|
+
it "release? is false" do
|
102
|
+
VersionTagRecognizer.release?("1.1.3a").should be_false
|
103
|
+
end
|
104
|
+
|
105
|
+
it "release? is false" do
|
106
|
+
VersionTagRecognizer.release?("1.1.3A").should be_false
|
107
|
+
end
|
108
|
+
|
109
|
+
it "release? is false" do
|
110
|
+
VersionTagRecognizer.release?("1.SNAPSHOT").should be_false
|
111
|
+
end
|
112
|
+
|
113
|
+
it "release? is false" do
|
114
|
+
VersionTagRecognizer.release?("1.snapshot").should be_false
|
115
|
+
end
|
116
|
+
|
117
|
+
it "release? is false" do
|
118
|
+
VersionTagRecognizer.release?("1.M1").should be_false
|
119
|
+
end
|
120
|
+
|
121
|
+
it "release? is false" do
|
122
|
+
VersionTagRecognizer.release?("2.0-m4").should be_false
|
123
|
+
end
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
it "is alpha? is true" do
|
128
|
+
VersionTagRecognizer.alpha?("2.0.alpha").should be_true
|
129
|
+
end
|
130
|
+
|
131
|
+
it "is alpha? is true" do
|
132
|
+
VersionTagRecognizer.alpha?("2.1.0alpha").should be_true
|
133
|
+
end
|
134
|
+
|
135
|
+
it "is alpha? is false" do
|
136
|
+
VersionTagRecognizer.alpha?("2.0.1").should be_false
|
137
|
+
end
|
138
|
+
|
139
|
+
it "is alpha? is false" do
|
140
|
+
VersionTagRecognizer.alpha?("2.1.0-BETA1").should be_false
|
141
|
+
end
|
142
|
+
|
143
|
+
it "is tagged? is true" do
|
144
|
+
VersionTagRecognizer.tagged?("2.1.0alpha").should be_true
|
145
|
+
end
|
146
|
+
|
147
|
+
|
148
|
+
|
149
|
+
it "remove_tag is right" do
|
150
|
+
VersionTagRecognizer.remove_tag("2.1.0alpha").should eql("2.1")
|
151
|
+
end
|
152
|
+
it "remove_tag is right" do
|
153
|
+
VersionTagRecognizer.remove_tag("2.1.1-BETA").should eql("2.1")
|
154
|
+
end
|
155
|
+
it "remove_tag is right" do
|
156
|
+
VersionTagRecognizer.remove_tag("2.1.1-RC").should eql("2.1")
|
157
|
+
end
|
158
|
+
it "remove_tag is right" do
|
159
|
+
VersionTagRecognizer.remove_tag("2.1.1-PRE").should eql("2.1")
|
160
|
+
end
|
161
|
+
|
162
|
+
|
163
|
+
|
164
|
+
it "is beta? is true" do
|
165
|
+
VersionTagRecognizer.beta?("2.0.beta").should be_true
|
166
|
+
end
|
167
|
+
|
168
|
+
it "is beta? is true" do
|
169
|
+
VersionTagRecognizer.beta?("2.1.0beta").should be_true
|
170
|
+
end
|
171
|
+
|
172
|
+
it "is beta? is false" do
|
173
|
+
VersionTagRecognizer.beta?("2.0.1").should be_false
|
174
|
+
end
|
175
|
+
|
176
|
+
it "is beta? is true" do
|
177
|
+
VersionTagRecognizer.beta?("2.2.0-BETA2").should be_true
|
178
|
+
end
|
179
|
+
|
180
|
+
it "is beta? is true" do
|
181
|
+
VersionTagRecognizer.beta?("2.1.0-BETA1").should be_true
|
182
|
+
end
|
183
|
+
|
184
|
+
it "is tagged? is true" do
|
185
|
+
VersionTagRecognizer.tagged?("2.1.0-BETA1").should be_true
|
186
|
+
end
|
187
|
+
|
188
|
+
it "remove_tag is right" do
|
189
|
+
VersionTagRecognizer.remove_tag("2.1.0-BETA1").should eql("2.1")
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
|
194
|
+
it "is dev? is true" do
|
195
|
+
VersionTagRecognizer.dev?("dev-master").should be_true
|
196
|
+
end
|
197
|
+
|
198
|
+
it "is dev? is true" do
|
199
|
+
VersionTagRecognizer.dev?("dev-progress-helper").should be_true
|
200
|
+
end
|
201
|
+
|
202
|
+
it "is dev? is true" do
|
203
|
+
VersionTagRecognizer.dev?("dev-deprecated").should be_true
|
204
|
+
end
|
205
|
+
|
206
|
+
it "is dev? is true" do
|
207
|
+
VersionTagRecognizer.dev?("2.2.x-dev").should be_true
|
208
|
+
end
|
209
|
+
|
210
|
+
it "is dev? is false" do
|
211
|
+
VersionTagRecognizer.dev?("2.0.1").should be_false
|
212
|
+
end
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
it "is rc? is true" do
|
217
|
+
VersionTagRecognizer.rc?("2.0.rc").should be_true
|
218
|
+
end
|
219
|
+
|
220
|
+
it "is rc? is true" do
|
221
|
+
VersionTagRecognizer.rc?("2.1.0rc").should be_true
|
222
|
+
end
|
223
|
+
|
224
|
+
it "is rc? is true" do
|
225
|
+
VersionTagRecognizer.rc?("2.2.0-RC3").should be_true
|
226
|
+
end
|
227
|
+
|
228
|
+
it "is rc? is false" do
|
229
|
+
VersionTagRecognizer.rc?("2.0.1").should be_false
|
230
|
+
end
|
231
|
+
|
232
|
+
|
233
|
+
|
234
|
+
it "is snapshot? is true" do
|
235
|
+
VersionTagRecognizer.snapshot?("2.0.snapshot").should be_true
|
236
|
+
end
|
237
|
+
|
238
|
+
it "is snapshot? is true" do
|
239
|
+
VersionTagRecognizer.snapshot?("2.1.0snapshot").should be_true
|
240
|
+
end
|
241
|
+
|
242
|
+
it "is snapshot? is true" do
|
243
|
+
VersionTagRecognizer.snapshot?("2.2.0-snapshot3").should be_true
|
244
|
+
end
|
245
|
+
|
246
|
+
it "is snapshot? is false" do
|
247
|
+
VersionTagRecognizer.snapshot?("2.0.1").should be_false
|
248
|
+
end
|
249
|
+
|
250
|
+
|
251
|
+
it "returns the right value for dev" do
|
252
|
+
VersionTagRecognizer.value_for("1.1.1-dev").should eql(0)
|
253
|
+
end
|
254
|
+
it "returns the right value for snapshot" do
|
255
|
+
VersionTagRecognizer.value_for("1.1.1-SNAPSHOT").should eql(2)
|
256
|
+
end
|
257
|
+
it "returns the right value for alpha" do
|
258
|
+
VersionTagRecognizer.value_for("1.1.1-alpha").should eql(3)
|
259
|
+
end
|
260
|
+
it "returns the right value for beta" do
|
261
|
+
VersionTagRecognizer.value_for("1.1.1-beta").should eql(4)
|
262
|
+
end
|
263
|
+
it "returns the right value for rc" do
|
264
|
+
VersionTagRecognizer.value_for("1.1.1-rc").should eql(5)
|
265
|
+
end
|
266
|
+
it "returns the right value for pre" do
|
267
|
+
VersionTagRecognizer.value_for("1.1.1-pre").should eql(6)
|
268
|
+
end
|
269
|
+
it "returns the right value for stable" do
|
270
|
+
VersionTagRecognizer.value_for("1.1.1").should eql(10)
|
271
|
+
end
|
272
|
+
|
273
|
+
|
274
|
+
|
275
|
+
it "returns compares right for alpha and beta" do
|
276
|
+
VersionTagRecognizer.compare_tags("1.1.1-alpha", "1.1.1-beta").should eql(-1)
|
277
|
+
end
|
278
|
+
it "returns compares right for beta and alpha" do
|
279
|
+
VersionTagRecognizer.compare_tags("1.1.1-beta", "1.1.1-alpha").should eql(1)
|
280
|
+
end
|
281
|
+
it "returns compares right for alpha and alpha" do
|
282
|
+
VersionTagRecognizer.compare_tags("1.1.1-alpha", "1.1.1-alpha").should eql(0)
|
283
|
+
end
|
284
|
+
it "returns compares right for RC and stable" do
|
285
|
+
VersionTagRecognizer.compare_tags("1.1.1-RC", "1.1.1").should eql(-1)
|
286
|
+
end
|
287
|
+
it "returns compares right for stable and dev" do
|
288
|
+
VersionTagRecognizer.compare_tags("1.1.1", "1.1.x-dev").should eql(1)
|
289
|
+
end
|
290
|
+
|
291
|
+
|
292
|
+
|
293
|
+
it "does fit stability" do
|
294
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.1", "stable" ).should be_true
|
295
|
+
end
|
296
|
+
it "does not fit stability" do
|
297
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.1-BETA", "stable" ).should be_false
|
298
|
+
end
|
299
|
+
it "does fit stability" do
|
300
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.1-BETA", "alpha" ).should be_true
|
301
|
+
end
|
302
|
+
it "does fit stability" do
|
303
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.1-BETA", "beta" ).should be_true
|
304
|
+
end
|
305
|
+
it "does fit stability" do
|
306
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.x-dev", "dev" ).should be_true
|
307
|
+
end
|
308
|
+
it "does not fit stability" do
|
309
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.x-dev", "alpha" ).should be_false
|
310
|
+
end
|
311
|
+
it "does not fit stability" do
|
312
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.x-dev", "RC" ).should be_false
|
313
|
+
end
|
314
|
+
it "does fit stability" do
|
315
|
+
VersionTagRecognizer.does_it_fit_stability?( "2.2.1-RC", "RC" ).should be_true
|
316
|
+
end
|
317
|
+
|
318
|
+
|
319
|
+
|
320
|
+
it "stability_tag_for returns right" do
|
321
|
+
VersionTagRecognizer.stability_tag_for( "2.2.1").should eql(VersionTagRecognizer::A_STABILITY_STABLE)
|
322
|
+
end
|
323
|
+
it "stability_tag_for returns right" do
|
324
|
+
VersionTagRecognizer.stability_tag_for( "2.2.1-RC").should eql(VersionTagRecognizer::A_STABILITY_RC)
|
325
|
+
end
|
326
|
+
it "stability_tag_for returns right" do
|
327
|
+
VersionTagRecognizer.stability_tag_for( "2.2.1-BETA1").should eql(VersionTagRecognizer::A_STABILITY_BETA)
|
328
|
+
end
|
329
|
+
it "stability_tag_for returns right" do
|
330
|
+
VersionTagRecognizer.stability_tag_for( "2.2.1-alpha").should eql(VersionTagRecognizer::A_STABILITY_ALPHA)
|
331
|
+
end
|
332
|
+
it "stability_tag_for returns right" do
|
333
|
+
VersionTagRecognizer.stability_tag_for( "2.2.x-dev").should eql(VersionTagRecognizer::A_STABILITY_DEV)
|
334
|
+
end
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
|
339
|
+
end
|
data/spec/versioncmp_spec.rb
CHANGED
@@ -25,6 +25,10 @@ describe Versioncmp do
|
|
25
25
|
it "dev-master is bigger than 10.10.999" do
|
26
26
|
Versioncmp.compare("dev-master", "10.10.999").should eql(1)
|
27
27
|
end
|
28
|
+
|
29
|
+
it "2.2.x-dev is bigger than 2.2.1" do
|
30
|
+
Versioncmp.compare("2.2.x-dev", "2.2.1").should eql(1)
|
31
|
+
end
|
28
32
|
|
29
33
|
it "1.1 is smaller than 1.1.1" do
|
30
34
|
Versioncmp.compare("1.1", "1.1.1").should eql(-1)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: naturalsorter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.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: 2013-03-
|
13
|
+
date: 2013-03-14 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rspec
|
@@ -43,11 +43,11 @@ files:
|
|
43
43
|
- lib/natcmp.rb
|
44
44
|
- lib/naturalsorter.rb
|
45
45
|
- lib/naturalsorter/version.rb
|
46
|
-
- lib/
|
46
|
+
- lib/version_tag_recognizer.rb
|
47
47
|
- lib/versioncmp.rb
|
48
48
|
- naturalsorter.gemspec
|
49
49
|
- spec/naturalsorter_spec.rb
|
50
|
-
- spec/
|
50
|
+
- spec/version_tag_recognizer_spec.rb
|
51
51
|
- spec/versioncmp_spec.rb
|
52
52
|
homepage: https://github.com/versioneye/naturalsorter
|
53
53
|
licenses: []
|
@@ -75,5 +75,5 @@ specification_version: 3
|
|
75
75
|
summary: Sorting arrays in natural order
|
76
76
|
test_files:
|
77
77
|
- spec/naturalsorter_spec.rb
|
78
|
-
- spec/
|
78
|
+
- spec/version_tag_recognizer_spec.rb
|
79
79
|
- spec/versioncmp_spec.rb
|
data/lib/release_recognizer.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
class ReleaseRecognizer
|
2
|
-
|
3
|
-
def self.value_for( value )
|
4
|
-
return 0 if self.dev? value
|
5
|
-
return 2 if self.snapshot? value
|
6
|
-
return 3 if self.pre? value
|
7
|
-
return 4 if self.alpha? value
|
8
|
-
return 5 if self.beta? value
|
9
|
-
return 6 if self.rc? value
|
10
|
-
return 10 if self.stable? value
|
11
|
-
return 1
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.compare_scopes( a, b)
|
15
|
-
a_val = self.value_for a
|
16
|
-
b_val = self.value_for b
|
17
|
-
return -1 if a_val < b_val
|
18
|
-
return 1 if a_val > b_val
|
19
|
-
return 0
|
20
|
-
end
|
21
|
-
|
22
|
-
def self.scoped? value
|
23
|
-
self.alpha?(value) or self.beta?(value) or
|
24
|
-
self.dev?(value) or self.rc?(value) or
|
25
|
-
self.snapshot?(value) or self.pre?(value) or
|
26
|
-
self.jbossorg?(value)
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.remove_scope value
|
30
|
-
if self.alpha? value
|
31
|
-
new_value = value.gsub(/\.[\w-]*alpha.*$/i, "")
|
32
|
-
return new_value.gsub(/\.[\w-]*a.*$/i, "")
|
33
|
-
elsif self.beta? value
|
34
|
-
new_value = value.gsub(/\.[\w-]*beta.*$/i, "")
|
35
|
-
return new_value.gsub(/\.[\w-]*b.*$/i, "")
|
36
|
-
elsif self.rc? value
|
37
|
-
return value.gsub(/\.[\w-]*rc.*$/i, "")
|
38
|
-
elsif self.pre? value
|
39
|
-
return value.gsub(/\.[\w-]*pre.*$/i, "")
|
40
|
-
elsif self.jbossorg? value
|
41
|
-
return value.gsub(/\.jbossorg.*$/i, "")
|
42
|
-
elsif self.snapshot? value
|
43
|
-
return value.gsub(/\.snapshot.*$/i, "")
|
44
|
-
end
|
45
|
-
return value
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.release? value
|
49
|
-
self.stable? value
|
50
|
-
end
|
51
|
-
|
52
|
-
def self.stable? value
|
53
|
-
if value.match(/.+RELEASE.*/i) or value.match(/.+BUILD.*/i) or
|
54
|
-
value.match(/.+FINAL.*/i) or value.match(/.+SP.*/i) or
|
55
|
-
value.match(/.+GA.*/i)
|
56
|
-
return true
|
57
|
-
end
|
58
|
-
!self.alpha?(value) and !self.beta?(value) and
|
59
|
-
!self.dev?(value) and !self.pre?(value) and
|
60
|
-
!self.rc?(value) and !value.match(/.+SEC.*/i) and
|
61
|
-
!self.snapshot?(value) and !value.match(/.+M.+/i)
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.alpha? value
|
65
|
-
return false if self.beta? value
|
66
|
-
value.match(/.*alpha.*/i) or value.match(/.+a.*/i)
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.beta? value
|
70
|
-
value.match(/.*beta.*/i) or value.match(/.+b.*/i)
|
71
|
-
end
|
72
|
-
|
73
|
-
def self.dev? value
|
74
|
-
value.match(/.*dev.*/i)
|
75
|
-
end
|
76
|
-
|
77
|
-
def self.rc? value
|
78
|
-
value.match(/.*rc.*/i)
|
79
|
-
end
|
80
|
-
|
81
|
-
def self.snapshot? value
|
82
|
-
value.match(/.+SNAPSHOT.*/i)
|
83
|
-
end
|
84
|
-
|
85
|
-
def self.pre? value
|
86
|
-
value.match(/.*pre.*$/i)
|
87
|
-
end
|
88
|
-
|
89
|
-
def self.jbossorg? value
|
90
|
-
value.match(/.*jbossorg.*$/i)
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
@@ -1,240 +0,0 @@
|
|
1
|
-
require "naturalsorter"
|
2
|
-
|
3
|
-
describe ReleaseRecognizer do
|
4
|
-
|
5
|
-
it "release? is true" do
|
6
|
-
ReleaseRecognizer.release?("1.1").should be_true
|
7
|
-
end
|
8
|
-
|
9
|
-
it "release? is true" do
|
10
|
-
ReleaseRecognizer.release?("1.0.0").should be_true
|
11
|
-
end
|
12
|
-
|
13
|
-
it "release? is true" do
|
14
|
-
ReleaseRecognizer.release?("1").should be_true
|
15
|
-
end
|
16
|
-
|
17
|
-
it "release? is true" do
|
18
|
-
ReleaseRecognizer.release?("3.3.2.GA").should be_true
|
19
|
-
end
|
20
|
-
|
21
|
-
it "release? is true" do
|
22
|
-
ReleaseRecognizer.release?("4.1.5.SP1").should be_true
|
23
|
-
end
|
24
|
-
|
25
|
-
it "release? is true" do
|
26
|
-
ReleaseRecognizer.release?("3.1.0.RELEASE").should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
it "release? is true" do
|
30
|
-
ReleaseRecognizer.release?("3.2.0.BUILD").should be_true
|
31
|
-
end
|
32
|
-
|
33
|
-
it "release? is true" do
|
34
|
-
ReleaseRecognizer.release?("3.2.0buiLd").should be_true
|
35
|
-
end
|
36
|
-
|
37
|
-
it "release? is true" do
|
38
|
-
ReleaseRecognizer.release?("3.2.0.Final").should be_true
|
39
|
-
end
|
40
|
-
|
41
|
-
it "release? is true" do
|
42
|
-
ReleaseRecognizer.release?("3.2.0FINAL").should be_true
|
43
|
-
end
|
44
|
-
|
45
|
-
it "release? is false" do
|
46
|
-
ReleaseRecognizer.release?("1.1.pre").should be_false
|
47
|
-
end
|
48
|
-
|
49
|
-
it "release? is false" do
|
50
|
-
ReleaseRecognizer.release?("2.5.6.SEC03").should be_false
|
51
|
-
end
|
52
|
-
|
53
|
-
it "release? is false" do
|
54
|
-
ReleaseRecognizer.release?("2.3.8.pre1").should be_false
|
55
|
-
end
|
56
|
-
|
57
|
-
it "release? is false" do
|
58
|
-
ReleaseRecognizer.release?("2.3.9.pre").should be_false
|
59
|
-
end
|
60
|
-
|
61
|
-
it "release? is false" do
|
62
|
-
ReleaseRecognizer.release?("3.0.0.beta4").should be_false
|
63
|
-
end
|
64
|
-
|
65
|
-
it "release? is false" do
|
66
|
-
ReleaseRecognizer.release?("3.0.0.BETA4").should be_false
|
67
|
-
end
|
68
|
-
|
69
|
-
it "release? is false" do
|
70
|
-
ReleaseRecognizer.release?("3.0.0.beta").should be_false
|
71
|
-
end
|
72
|
-
|
73
|
-
it "release? is false" do
|
74
|
-
ReleaseRecognizer.release?("3.0.0.rc").should be_false
|
75
|
-
end
|
76
|
-
|
77
|
-
it "release? is false" do
|
78
|
-
ReleaseRecognizer.release?("3.0.0.rc2").should be_false
|
79
|
-
end
|
80
|
-
|
81
|
-
it "release? is false" do
|
82
|
-
ReleaseRecognizer.release?("3.0.0.RC2").should be_false
|
83
|
-
end
|
84
|
-
|
85
|
-
it "release? is false" do
|
86
|
-
ReleaseRecognizer.release?("2.0.x-dev").should be_false
|
87
|
-
end
|
88
|
-
|
89
|
-
it "release? is false" do
|
90
|
-
ReleaseRecognizer.release?("2.0.x-DEV").should be_false
|
91
|
-
end
|
92
|
-
|
93
|
-
it "release? is false" do
|
94
|
-
ReleaseRecognizer.release?("1.8b1").should be_false
|
95
|
-
end
|
96
|
-
|
97
|
-
it "release? is false" do
|
98
|
-
ReleaseRecognizer.release?("1.8B1").should be_false
|
99
|
-
end
|
100
|
-
|
101
|
-
it "release? is false" do
|
102
|
-
ReleaseRecognizer.release?("1.1.3a").should be_false
|
103
|
-
end
|
104
|
-
|
105
|
-
it "release? is false" do
|
106
|
-
ReleaseRecognizer.release?("1.1.3A").should be_false
|
107
|
-
end
|
108
|
-
|
109
|
-
it "release? is false" do
|
110
|
-
ReleaseRecognizer.release?("1.SNAPSHOT").should be_false
|
111
|
-
end
|
112
|
-
|
113
|
-
it "release? is false" do
|
114
|
-
ReleaseRecognizer.release?("1.snapshot").should be_false
|
115
|
-
end
|
116
|
-
|
117
|
-
it "release? is false" do
|
118
|
-
ReleaseRecognizer.release?("1.M1").should be_false
|
119
|
-
end
|
120
|
-
|
121
|
-
it "release? is false" do
|
122
|
-
ReleaseRecognizer.release?("2.0-m4").should be_false
|
123
|
-
end
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
it "is alpha? is true" do
|
128
|
-
ReleaseRecognizer.alpha?("2.0.alpha").should be_true
|
129
|
-
end
|
130
|
-
|
131
|
-
it "is alpha? is true" do
|
132
|
-
ReleaseRecognizer.alpha?("2.1.0alpha").should be_true
|
133
|
-
end
|
134
|
-
|
135
|
-
it "is alpha? is false" do
|
136
|
-
ReleaseRecognizer.alpha?("2.0.1").should be_false
|
137
|
-
end
|
138
|
-
|
139
|
-
it "is alpha? is false" do
|
140
|
-
ReleaseRecognizer.alpha?("2.1.0-BETA1").should be_false
|
141
|
-
end
|
142
|
-
|
143
|
-
it "is scoped? is true" do
|
144
|
-
ReleaseRecognizer.scoped?("2.1.0alpha").should be_true
|
145
|
-
end
|
146
|
-
|
147
|
-
it "remove_scope is right" do
|
148
|
-
ReleaseRecognizer.remove_scope("2.1.0alpha").should eql("2.1")
|
149
|
-
end
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
it "is beta? is true" do
|
154
|
-
ReleaseRecognizer.beta?("2.0.beta").should be_true
|
155
|
-
end
|
156
|
-
|
157
|
-
it "is beta? is true" do
|
158
|
-
ReleaseRecognizer.beta?("2.1.0beta").should be_true
|
159
|
-
end
|
160
|
-
|
161
|
-
it "is beta? is false" do
|
162
|
-
ReleaseRecognizer.beta?("2.0.1").should be_false
|
163
|
-
end
|
164
|
-
|
165
|
-
it "is beta? is true" do
|
166
|
-
ReleaseRecognizer.beta?("2.2.0-BETA2").should be_true
|
167
|
-
end
|
168
|
-
|
169
|
-
it "is beta? is true" do
|
170
|
-
ReleaseRecognizer.beta?("2.1.0-BETA1").should be_true
|
171
|
-
end
|
172
|
-
|
173
|
-
it "is scoped? is true" do
|
174
|
-
ReleaseRecognizer.scoped?("2.1.0-BETA1").should be_true
|
175
|
-
end
|
176
|
-
|
177
|
-
it "remove_scope is right" do
|
178
|
-
ReleaseRecognizer.remove_scope("2.1.0-BETA1").should eql("2.1")
|
179
|
-
end
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
it "is dev? is true" do
|
184
|
-
ReleaseRecognizer.dev?("dev-master").should be_true
|
185
|
-
end
|
186
|
-
|
187
|
-
it "is dev? is true" do
|
188
|
-
ReleaseRecognizer.dev?("dev-progress-helper").should be_true
|
189
|
-
end
|
190
|
-
|
191
|
-
it "is dev? is true" do
|
192
|
-
ReleaseRecognizer.dev?("dev-deprecated").should be_true
|
193
|
-
end
|
194
|
-
|
195
|
-
it "is dev? is true" do
|
196
|
-
ReleaseRecognizer.dev?("2.2.x-dev").should be_true
|
197
|
-
end
|
198
|
-
|
199
|
-
it "is dev? is false" do
|
200
|
-
ReleaseRecognizer.dev?("2.0.1").should be_false
|
201
|
-
end
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
it "is rc? is true" do
|
206
|
-
ReleaseRecognizer.rc?("2.0.rc").should be_true
|
207
|
-
end
|
208
|
-
|
209
|
-
it "is rc? is true" do
|
210
|
-
ReleaseRecognizer.rc?("2.1.0rc").should be_true
|
211
|
-
end
|
212
|
-
|
213
|
-
it "is rc? is true" do
|
214
|
-
ReleaseRecognizer.rc?("2.2.0-RC3").should be_true
|
215
|
-
end
|
216
|
-
|
217
|
-
it "is rc? is false" do
|
218
|
-
ReleaseRecognizer.rc?("2.0.1").should be_false
|
219
|
-
end
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
it "is snapshot? is true" do
|
224
|
-
ReleaseRecognizer.snapshot?("2.0.snapshot").should be_true
|
225
|
-
end
|
226
|
-
|
227
|
-
it "is snapshot? is true" do
|
228
|
-
ReleaseRecognizer.snapshot?("2.1.0snapshot").should be_true
|
229
|
-
end
|
230
|
-
|
231
|
-
it "is snapshot? is true" do
|
232
|
-
ReleaseRecognizer.snapshot?("2.2.0-snapshot3").should be_true
|
233
|
-
end
|
234
|
-
|
235
|
-
it "is snapshot? is false" do
|
236
|
-
ReleaseRecognizer.snapshot?("2.0.1").should be_false
|
237
|
-
end
|
238
|
-
|
239
|
-
|
240
|
-
end
|