naturalsorter 0.3.6 → 0.3.7
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 +15 -6
- data/lib/naturalsorter.rb +11 -7
- data/lib/naturalsorter/version.rb +1 -1
- data/spec/naturalsorter_spec.rb +9 -0
- metadata +4 -4
data/README.markdown
CHANGED
|
@@ -20,40 +20,49 @@ This fork contains some special algorithms to sort version numbers in a natural
|
|
|
20
20
|
|
|
21
21
|
## API
|
|
22
22
|
|
|
23
|
-
This GEM has
|
|
23
|
+
This GEM has 10 methods
|
|
24
|
+
|
|
25
|
+
This 2 methods are sorting a simple array of Strings. The name of the methods and the parameters are self explained.
|
|
24
26
|
|
|
25
27
|
`Naturalsorter::Sorter.sort(array, caseinsesitive)`
|
|
26
28
|
|
|
27
29
|
`Naturalsorter::Sorter.sort_desc(array, caseinsesitive)`
|
|
28
30
|
|
|
29
|
-
And this here for more advanced sorting. Where you can put in a array of objects and the method which should called on every object for comparison.
|
|
31
|
+
And this here is for more advanced sorting. Where you can put in a array of objects and the method which should called on every object for comparison.
|
|
30
32
|
|
|
31
33
|
`Naturalsorter::Sorter.sort_by_method(array, method, caseinsesitive)`
|
|
32
34
|
|
|
33
35
|
`Naturalsorter::Sorter.sort_by_method_desc(array, method, caseinsesitive)`
|
|
34
36
|
|
|
35
|
-
This methods are based on a different algo.
|
|
37
|
+
This methods are based on a different algo. Spezially optimizied for sorting version strings.
|
|
36
38
|
|
|
37
39
|
`Naturalsorter::Sorter.sort_version(array)`
|
|
38
40
|
|
|
39
41
|
`Naturalsorter::Sorter.sort_version_desc(array)`
|
|
40
42
|
|
|
41
|
-
This here is again for an array with objects.
|
|
43
|
+
This here is again for an array with objects. Spezially optimizied for sorting version strings.
|
|
42
44
|
|
|
43
45
|
`Naturalsorter::Sorter.sort_version_by_method(array, method)`
|
|
44
46
|
|
|
45
47
|
`Naturalsorter::Sorter.sort_version_by_method_desc(array)`
|
|
46
48
|
|
|
47
|
-
Get newest.
|
|
49
|
+
Get the newest version from the both given.
|
|
48
50
|
|
|
49
51
|
`Naturalsorter::Sorter.get_newest_version(first, second)`
|
|
50
52
|
|
|
53
|
+
This is for the Ruby GEM notaiton '~>'. For example '~>1.1' fits '1.2' and '1.9' and '1.14'. But not 2.0.
|
|
54
|
+
The parameter version would be for example '~>1.1' and the parameter newest_version would be the
|
|
55
|
+
current newest version of the GEM, for example "2.0". The method will return false in this case
|
|
56
|
+
because '~>1.1' doesn't fit anymore the newest version.
|
|
57
|
+
|
|
58
|
+
`Naturalsorter::Sorter.is_version_current?(version, newest_version)`
|
|
59
|
+
|
|
51
60
|
|
|
52
61
|
## Installation
|
|
53
62
|
|
|
54
63
|
You should add this line to your Gemfile
|
|
55
64
|
|
|
56
|
-
`gem 'naturalsorter', '0.3.
|
|
65
|
+
`gem 'naturalsorter', '0.3.7'`
|
|
57
66
|
|
|
58
67
|
and run this command in your app root directory
|
|
59
68
|
|
data/lib/naturalsorter.rb
CHANGED
|
@@ -90,13 +90,17 @@ module Naturalsorter
|
|
|
90
90
|
array.last
|
|
91
91
|
end
|
|
92
92
|
|
|
93
|
-
|
|
93
|
+
# This is for the GEM notaiton ~>
|
|
94
|
+
# For example ~>1.1 fits 1.2 and 1.9 and 1.14
|
|
95
|
+
# But not 2.0
|
|
96
|
+
def self.is_version_current?(version, newest_version)
|
|
94
97
|
version = version.gsub("~>", "")
|
|
98
|
+
version = version.gsub(" " , "")
|
|
95
99
|
versions = version.split(".")
|
|
96
|
-
|
|
100
|
+
newests = newest_version.split(".")
|
|
97
101
|
min_length = versions.size
|
|
98
|
-
if
|
|
99
|
-
min_length =
|
|
102
|
+
if newests.size < min_length
|
|
103
|
+
min_length = newests.size
|
|
100
104
|
end
|
|
101
105
|
min_length = min_length - 2
|
|
102
106
|
if min_length < 0
|
|
@@ -104,14 +108,14 @@ module Naturalsorter
|
|
|
104
108
|
end
|
|
105
109
|
(0..min_length).each do |z|
|
|
106
110
|
ver = versions[z]
|
|
107
|
-
cur =
|
|
111
|
+
cur = newests[z]
|
|
108
112
|
if (cur > ver)
|
|
109
113
|
return false
|
|
110
114
|
end
|
|
111
115
|
end
|
|
112
|
-
if
|
|
116
|
+
if newests.size < versions.size
|
|
113
117
|
ver = versions[min_length + 1]
|
|
114
|
-
cur =
|
|
118
|
+
cur = newests[min_length + 1]
|
|
115
119
|
if cur > ver
|
|
116
120
|
return false
|
|
117
121
|
end
|
data/spec/naturalsorter_spec.rb
CHANGED
|
@@ -87,6 +87,12 @@ describe Naturalsorter::Sorter do
|
|
|
87
87
|
it "returns true" do
|
|
88
88
|
Naturalsorter::Sorter.is_version_current?("1.1.1", "1.1.9").should be_true
|
|
89
89
|
end
|
|
90
|
+
it "returns true" do
|
|
91
|
+
Naturalsorter::Sorter.is_version_current?("1.1.1", "1.1.2").should be_true
|
|
92
|
+
end
|
|
93
|
+
it "returns true" do
|
|
94
|
+
Naturalsorter::Sorter.is_version_current?("1.1.1", "1.1.12").should be_true
|
|
95
|
+
end
|
|
90
96
|
it "returns false" do
|
|
91
97
|
Naturalsorter::Sorter.is_version_current?("1.1.1", "1.2.0").should be_false
|
|
92
98
|
end
|
|
@@ -99,6 +105,9 @@ describe Naturalsorter::Sorter do
|
|
|
99
105
|
it "returns false" do
|
|
100
106
|
Naturalsorter::Sorter.is_version_current?("1.1.1", "2").should be_false
|
|
101
107
|
end
|
|
108
|
+
it "returns false" do
|
|
109
|
+
Naturalsorter::Sorter.is_version_current?("1.1", "2.0").should be_false
|
|
110
|
+
end
|
|
102
111
|
end
|
|
103
112
|
|
|
104
113
|
describe "get_newest_version" 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: 0.3.
|
|
4
|
+
version: 0.3.7
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,11 +10,11 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2012-06-
|
|
13
|
+
date: 2012-06-24 00:00:00.000000000Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rspec
|
|
17
|
-
requirement: &
|
|
17
|
+
requirement: &70249509911580 !ruby/object:Gem::Requirement
|
|
18
18
|
none: false
|
|
19
19
|
requirements:
|
|
20
20
|
- - ~>
|
|
@@ -22,7 +22,7 @@ dependencies:
|
|
|
22
22
|
version: '2.6'
|
|
23
23
|
type: :development
|
|
24
24
|
prerelease: false
|
|
25
|
-
version_requirements: *
|
|
25
|
+
version_requirements: *70249509911580
|
|
26
26
|
description: This GEM is sorting Arrays in a natural order. a2 < a10
|
|
27
27
|
email:
|
|
28
28
|
- robert.reiz@gmx.com
|