naturalsorter 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- data/README.markdown +1 -1
- data/lib/naturalsorter/version.rb +1 -1
- data/lib/versioncmp.rb +35 -12
- data/spec/versioncmp_spec.rb +20 -0
- metadata +3 -3
data/README.markdown
CHANGED
data/lib/versioncmp.rb
CHANGED
@@ -37,10 +37,10 @@ class Versioncmp
|
|
37
37
|
part1 = Versioncmp.getAPiece(offset1, a);
|
38
38
|
part2 = Versioncmp.getAPiece(offset2, b);
|
39
39
|
|
40
|
-
if
|
40
|
+
if Versioncmp.timestamp?(part1) && part2.length() < 8
|
41
41
|
return -1
|
42
42
|
end
|
43
|
-
if
|
43
|
+
if Versioncmp.timestamp?(part2) && part1.length() < 8
|
44
44
|
return 1
|
45
45
|
end
|
46
46
|
|
@@ -48,10 +48,6 @@ class Versioncmp
|
|
48
48
|
offset2 += part2.length() + 1;
|
49
49
|
|
50
50
|
if ( part1.match(/^[0-9]+$/) != nil && part2.match(/^[0-9]+$/) != nil )
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
51
|
ai = part1.to_i;
|
56
52
|
bi = part2.to_i;
|
57
53
|
result = Versioncmp.compareInt(ai, bi);
|
@@ -90,20 +86,35 @@ class Versioncmp
|
|
90
86
|
small = String.new(a)
|
91
87
|
end
|
92
88
|
if (Versioncmp.isRc(big))
|
93
|
-
bigwithoutRc = big.gsub(/\.
|
89
|
+
bigwithoutRc = big.gsub(/\.rc.*$/i, "")
|
90
|
+
bigwithoutRc = bigwithoutRc.gsub(/\-rc.*$/i, "")
|
94
91
|
if (Versioncmp.compareString(bigwithoutRc, small) == 0)
|
95
92
|
return Versioncmp.getRcValue(a, b)
|
96
93
|
end
|
97
94
|
elsif (Versioncmp.isBeta(big))
|
98
|
-
bigwithoutBeta = big.gsub(/\.
|
95
|
+
bigwithoutBeta = big.gsub(/\.beta[1-9]*$/i, "")
|
96
|
+
bigwithoutBeta = bigwithoutBeta.gsub(/\-beta[1-9]*$/i, "")
|
99
97
|
if (Versioncmp.compareString(bigwithoutBeta, small) == 0)
|
100
98
|
return Versioncmp.getRcValue(a, b)
|
101
99
|
end
|
100
|
+
elsif (Versioncmp.isAlpha(big))
|
101
|
+
bigwithoutAlpha = big.gsub(/\.alpha[1-9]*$/i, "")
|
102
|
+
bigwithoutAlpha = bigwithoutAlpha.gsub(/\-alpha[1-9]*$/i, "")
|
103
|
+
if (Versioncmp.compareString(bigwithoutAlpha, small) == 0)
|
104
|
+
return Versioncmp.getRcValue(a, b)
|
105
|
+
end
|
102
106
|
elsif (Versioncmp.isPre(big))
|
103
|
-
bigwithoutPre = big.gsub(/\.
|
107
|
+
bigwithoutPre = big.gsub(/\.pre[1-9]*$/i, "")
|
108
|
+
bigwithoutPre = bigwithoutPre..gsub(/\-pre[1-9]*$/i, "")
|
104
109
|
if (Versioncmp.compareString(bigwithoutPre, small) == 0)
|
105
110
|
return Versioncmp.getRcValue(a, b)
|
106
111
|
end
|
112
|
+
elsif (Versioncmp.isJbossorg(big))
|
113
|
+
bigwithoutRc = big.gsub(/\.jbossorg.*$/i, "")
|
114
|
+
bigwithoutRc = bigwithoutRc.gsub(/\-jbossorg.*$/i, "")
|
115
|
+
if (Versioncmp.compareString(bigwithoutRc, small) == 0)
|
116
|
+
return Versioncmp.getRcValue(a, b)
|
117
|
+
end
|
107
118
|
end
|
108
119
|
return 1 if a.length > b.length
|
109
120
|
return -1 if a.length < b.length
|
@@ -111,15 +122,23 @@ class Versioncmp
|
|
111
122
|
end
|
112
123
|
|
113
124
|
def self.isRc(a)
|
114
|
-
return a.match(/.*
|
125
|
+
return a.match(/.*rc.*$/i) != nil;
|
126
|
+
end
|
127
|
+
|
128
|
+
def self.isJbossorg(a)
|
129
|
+
return a.match(/.*jbossorg.*$/i) != nil;
|
115
130
|
end
|
116
131
|
|
117
132
|
def self.isBeta(a)
|
118
|
-
return a.match(/.*
|
133
|
+
return a.match(/.*beta[1-9]*$/i) != nil;
|
134
|
+
end
|
135
|
+
|
136
|
+
def self.isAlpha(a)
|
137
|
+
return a.match(/.*alpha[1-9]*$/i) != nil;
|
119
138
|
end
|
120
139
|
|
121
140
|
def self.isPre(a)
|
122
|
-
return a.match(/.*
|
141
|
+
return a.match(/.*pre[1-9]*$/i) != nil;
|
123
142
|
end
|
124
143
|
|
125
144
|
def self.getAPiece(offset, cake)
|
@@ -142,5 +161,9 @@ class Versioncmp
|
|
142
161
|
return 1 if (a.length() < b.length())
|
143
162
|
return -1
|
144
163
|
end
|
164
|
+
|
165
|
+
def self.timestamp?(part)
|
166
|
+
return part.length() == 8 && part.match(/^[0-9]+$/) != nil
|
167
|
+
end
|
145
168
|
|
146
169
|
end
|
data/spec/versioncmp_spec.rb
CHANGED
@@ -34,6 +34,26 @@ describe Versioncmp do
|
|
34
34
|
Versioncmp.compare("1.1.rc1", "1.1").should eql(-1)
|
35
35
|
end
|
36
36
|
|
37
|
+
it "smaller RC" do
|
38
|
+
Versioncmp.compare("1.1-rc1", "1.1").should eql(-1)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "smaller alpha" do
|
42
|
+
Versioncmp.compare("1.1-alpha1", "1.1").should eql(-1)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "smaller beta" do
|
46
|
+
Versioncmp.compare("3.1-beta1", "3.1").should eql(-1)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "smaller 3.0-rc4-negotiate" do
|
50
|
+
Versioncmp.compare("3.0-rc4-negotiate", "3.0").should eql(-1)
|
51
|
+
end
|
52
|
+
|
53
|
+
it "smaller 3.1-jbossorg-1" do
|
54
|
+
Versioncmp.compare("3.1-jbossorg-1", "3.1").should eql(-1)
|
55
|
+
end
|
56
|
+
|
37
57
|
it "bigger RC" do
|
38
58
|
Versioncmp.compare("1.1.rc3", "1.1.rc2").should eql(1)
|
39
59
|
end
|
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: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2012-04-06 00:00:00.000000000Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70229582420100 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,7 +21,7 @@ dependencies:
|
|
21
21
|
version: '2.6'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70229582420100
|
25
25
|
description: This GEM is sorting Arrays in a natural order. a2 < a10
|
26
26
|
email:
|
27
27
|
- robert.reiz@gmx.com
|