naturalsorter 3.0.8 → 3.0.9
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.
- checksums.yaml +4 -4
- data/lib/naturalsorter/version.rb +1 -1
- data/lib/versioncmp.rb +30 -5
- data/spec/versioncmp_spec.rb +21 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 26c550b34ce0dc4469c49e3e961b1b1c73821ddf
|
|
4
|
+
data.tar.gz: 941b2e7359ecedbe4d701eb29b9b5ecbd05164c2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3def80a792398c9db5da56d468bd9558f861cb720143aee5441188a305e3eda19879a412e5e3ee995950e558826fe1effcb6f5835fee1ce321c6eee0e4dd633a
|
|
7
|
+
data.tar.gz: ede6284471e7032e9930d59243a3d3b304f8a323d2eb0a9e9f04613c7e469cf5b5f8b9c658a6bddff6881ecb3d18d38d523f4c6e3d21905b63dbaef7789bf759
|
data/lib/versioncmp.rb
CHANGED
|
@@ -74,7 +74,7 @@ class Versioncmp
|
|
|
74
74
|
elsif ( !part1.match(/^[0-9]+$/) && !part2.match(/^[0-9]+$/) )
|
|
75
75
|
return self.compare_strings ab[0], ab[1], part1, part2
|
|
76
76
|
else
|
|
77
|
-
return self.
|
|
77
|
+
return self.compare_special_cases part1, part2
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
|
|
@@ -97,9 +97,9 @@ class Versioncmp
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
|
|
100
|
-
def self.
|
|
100
|
+
def self.compare_special_cases part1, part2
|
|
101
101
|
result = Versioncmp.check_jquery_versioning(part1, part2)
|
|
102
|
-
return result if result
|
|
102
|
+
return result if !result.to_s.strip.empty?
|
|
103
103
|
|
|
104
104
|
digit = part1 if part1.match(/\d/)
|
|
105
105
|
return -1 if ( part1.match(/\d/) && part2.match(/#{digit}\S*patch\S*/) )
|
|
@@ -110,19 +110,44 @@ class Versioncmp
|
|
|
110
110
|
if ( part1.match(/#\S*patch\S*/) && part2.match(/\S*patch\S*/) )
|
|
111
111
|
return compare_string(part1, part2)
|
|
112
112
|
end
|
|
113
|
-
|
|
113
|
+
|
|
114
114
|
return 1 if ( part1.eql?("0") && part2.match(/^[a-zA-Z]+/) )
|
|
115
115
|
return -1 if ( part2.eql?("0") && part1.match(/^[a-zA-Z]+/) )
|
|
116
116
|
return -1 if ( part1.eql?("0") && part2.match(/^[1-9]+[-_a-zA-Z]+/) )
|
|
117
117
|
return 1 if ( part2.eql?("0") && part1.match(/^[1-9]+[-_a-zA-Z]+/) )
|
|
118
|
-
|
|
118
|
+
|
|
119
|
+
pm1 = part1.match(/\A[0-9]+\z/)
|
|
120
|
+
pm2 = part2.match(/\A(\d+)(\w+)\z/i)
|
|
121
|
+
return 1 if ( pm1 && pm2 && pm2[1].eql?(part1) && VersionTagRecognizer.stable?(pm2[2]) )
|
|
122
|
+
return -1 if ( pm1 && pm2 && pm2[1].eql?(part1) && !VersionTagRecognizer.stable?(pm2[2]) )
|
|
123
|
+
|
|
124
|
+
pm1 = part1.match(/\A(\d+)-(\w+)\z/i)
|
|
125
|
+
pm2 = part2.match(/\A\d+\z/i)
|
|
126
|
+
return 1 if try_to_i_bigger( pm1, pm2, part2 )
|
|
127
|
+
return 1 if pm2 && pm1 && pm1[1].eql?(part2) && VersionTagRecognizer.stable?(pm1[2])
|
|
128
|
+
|
|
129
|
+
pm1 = part1.match(/\A\d+\z/i)
|
|
130
|
+
pm2 = part2.match(/\A(\d+)-(\w+)\z/i)
|
|
131
|
+
return 1 if try_to_i_bigger( pm1, pm2, part2 )
|
|
132
|
+
return -1 if pm1 && pm2 && pm2[1].eql?(part1) && VersionTagRecognizer.stable?(pm2[2])
|
|
133
|
+
|
|
134
|
+
return 1 if ( part1.match(/\A[0-9]+\z/) && !part2.match(/\A[0-9]+\z/) )
|
|
135
|
+
|
|
119
136
|
return -1;
|
|
120
137
|
rescue => e
|
|
121
138
|
p e.message
|
|
139
|
+
p e.backtrace.join("\n")
|
|
122
140
|
return -1
|
|
123
141
|
end
|
|
124
142
|
|
|
125
143
|
|
|
144
|
+
def self.try_to_i_bigger pm1, pm2, part2
|
|
145
|
+
pm2 && pm1 && pm1[1].to_i > part2.to_i
|
|
146
|
+
rescue => e
|
|
147
|
+
false
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
|
|
126
151
|
# Tags are RC, alpha, beta, dev and so on.
|
|
127
152
|
#
|
|
128
153
|
def self.check_for_tags(a, b)
|
data/spec/versioncmp_spec.rb
CHANGED
|
@@ -34,6 +34,26 @@ describe Versioncmp do
|
|
|
34
34
|
Versioncmp.compare("2.2.x-dev", "2.2.1").should eql(1)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
+
it "3.5.5-1 is bigger than 3.5.5" do
|
|
38
|
+
Versioncmp.compare("3.5.5-1", "3.5.5").should eql(1)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
it "3.5.5 is smaller than 3.5.5-1 " do
|
|
42
|
+
Versioncmp.compare("3.5.5", "3.5.5-1").should eql(-1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
it "2.3.1-b01 is bigger than 2.3.1" do
|
|
46
|
+
Versioncmp.compare("2.3.1-b01", "2.3.1").should eql(1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "2.3.2-b01 is bigger than 2.3.1" do
|
|
50
|
+
Versioncmp.compare("2.3.2-b01", "2.3.1").should eql(1)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "2.3.d-b01 is smaller than 2.3.1" do
|
|
54
|
+
Versioncmp.compare("2.3.d-b01", "2.3.1").should eql(-1)
|
|
55
|
+
end
|
|
56
|
+
|
|
37
57
|
it "1.1 is smaller than 1.1.1" do
|
|
38
58
|
Versioncmp.compare("1.1", "1.1.1").should eql(-1)
|
|
39
59
|
end
|
|
@@ -155,7 +175,7 @@ describe Versioncmp do
|
|
|
155
175
|
end
|
|
156
176
|
|
|
157
177
|
it "1.7b is bigger than 1.7a" do
|
|
158
|
-
Versioncmp.compare("1.
|
|
178
|
+
Versioncmp.compare("1.7b", "1.7a").should eql(1)
|
|
159
179
|
end
|
|
160
180
|
|
|
161
181
|
it "1.7.1rc1 is smaller than 1.7.2" do
|
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: 3.0.
|
|
4
|
+
version: 3.0.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- reiz
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2015-
|
|
12
|
+
date: 2015-07-15 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: rspec
|
|
@@ -70,7 +70,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
70
70
|
version: '0'
|
|
71
71
|
requirements: []
|
|
72
72
|
rubyforge_project: naturalsorter
|
|
73
|
-
rubygems_version: 2.4.
|
|
73
|
+
rubygems_version: 2.4.8
|
|
74
74
|
signing_key:
|
|
75
75
|
specification_version: 4
|
|
76
76
|
summary: Sorting arrays in natural order
|