naturalsort 1.1.1 → 1.2.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.
- checksums.yaml +15 -0
- data/.gitignore +18 -0
- data/.travis.yml +8 -0
- data/CHANGELOG.md +49 -0
- data/Gemfile +3 -0
- data/LICENSE +22 -0
- data/README.md +130 -0
- data/Rakefile +7 -24
- data/lib/natural_sort.rb +4 -102
- data/lib/natural_sort/base.rb +68 -0
- data/lib/natural_sort/engine.rb +85 -0
- data/lib/natural_sort/kernel.rb +64 -0
- data/lib/natural_sort/version.rb +5 -0
- data/lib/natural_sort_kernel.rb +2 -46
- data/naturalsort.gemspec +22 -0
- data/test/test_helper.rb +36 -29
- data/test/test_natural_sort.rb +13 -13
- data/test/test_natural_sort_alone.rb +11 -3
- data/test/test_natural_sort_kernel.rb +21 -20
- metadata +72 -97
- data/History.txt +0 -24
- data/Manifest.txt +0 -10
- data/README.txt +0 -87
checksums.yaml
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
!binary "U0hBMQ==":
|
|
3
|
+
metadata.gz: !binary |-
|
|
4
|
+
YzVkY2U1YzA2YjJkMDNjNGNmNGZlMjM4NTBkZGU0MjY0OWMxMzE5OA==
|
|
5
|
+
data.tar.gz: !binary |-
|
|
6
|
+
NWQzNzM1ODExZmQ5MDkzYzVkODZlZWQ5N2FiNjhmNDU5N2I2Yjc3Yg==
|
|
7
|
+
SHA512:
|
|
8
|
+
metadata.gz: !binary |-
|
|
9
|
+
MDNhMTkyNWRiMGY0MGUwMzA2MDc5Yjg0ZjRmZTUzZWRiMzEzMjcyYmNmYzQ3
|
|
10
|
+
YWI0MGU1ODYzNDhmOTIzMDc0N2E3YWFlNDZiNDIxMmYyYjI0MTc2YmNjMWU0
|
|
11
|
+
ZWQzMDMzMjA5YzkxOGI1NmI1YjY4ZTExZDQ3MDg1Mzg4MjU3NzI=
|
|
12
|
+
data.tar.gz: !binary |-
|
|
13
|
+
MWFmMmNhZmIxZjY2ZGNhODVkOTZiMzU2Y2I4NGM4NmVmNjM4ZGM5OTQ0ZDY3
|
|
14
|
+
Zjg1YTZlZmIxMWJjNjM3YTBhMTkxYWUwMzMxOGIzZTg3ZjJjNTdjNzAxYjUy
|
|
15
|
+
ZWY1MWM4OTExNzFiOTJlMzJhOWQyZDQ3ZTIzYmMwNTgzZTQzZjY=
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/CHANGELOG.md
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 1.2.0 - 2013-10-10
|
|
4
|
+
|
|
5
|
+
* DEPRECATION: deprecate `NaturalSort.naturalsort` and replace with `NaturalSort.sort`
|
|
6
|
+
* Use `Array(object)` instead of `object.to_a` for implicit Array conversion
|
|
7
|
+
* Remove unused private instance methods which were aliased to class methods
|
|
8
|
+
* Make regexp objects as module constants
|
|
9
|
+
* Reorganize directory/require structure to match conventions used in other gems. Core sorting functions are moved to new `NaturalSort::Engine` module.
|
|
10
|
+
* Kernel: Only include into `Set` if Set is defined
|
|
11
|
+
* Kernel: `Range#natural_sort` is now an alias to `Range#to_a`
|
|
12
|
+
* Test: Upgrade to use Minitest gem
|
|
13
|
+
* Test: Improve readability by using `%w()` syntax for arrays
|
|
14
|
+
* Documentation: Convert all code documentation to TomDoc format
|
|
15
|
+
* Admin: Remove rdoc generator which was not working
|
|
16
|
+
* Admin: Add files .gitignore, Gemfile, gemspec, and cleanup Rakefile
|
|
17
|
+
* Admin: Add Travis and CodeClimate
|
|
18
|
+
* Admin: Migrate to Github
|
|
19
|
+
|
|
20
|
+
## 1.1.1 - 2010-07-21
|
|
21
|
+
|
|
22
|
+
* Fix typo error in some unit test
|
|
23
|
+
* Remove copy/paste between naturalsort and natural_sort methods
|
|
24
|
+
* Added samples in rdoc
|
|
25
|
+
* Adding contribution from Sobe http://pastie.caboo.se/139803 (thanks mate)
|
|
26
|
+
* Sort complex text list (see test_natural_sort_kernel.rb:107))
|
|
27
|
+
* Fix more complex [string][number] pattern like:
|
|
28
|
+
```ruby
|
|
29
|
+
["x2-y08", "x2-g8", "x2-y7", "x8-y8"].natural_sort => ["x2-g8", "x2-y7", "x2-y08", "x8-y8"]
|
|
30
|
+
["x02-y08", "x02-g8", "x2-y7", "x8-y8"].natural_sort => ["x02-g8", "x2-y7", "x02-y08", "x8-y8"]
|
|
31
|
+
```
|
|
32
|
+
* Fix bug in Range ordering:
|
|
33
|
+
```ruby
|
|
34
|
+
(1..21).natural_sort => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## 1.1.0 - 2008-01-08
|
|
38
|
+
|
|
39
|
+
* Improve documentation to get better google results
|
|
40
|
+
* Remove alias methods: `sort_natural`, `sort_alpha`, `alpha_sort`, `sort_alphabetical`, `alphabetical_sort`, `sort_alphanum`, `alphanum_sort`
|
|
41
|
+
|
|
42
|
+
## 1.0.1 - 2007-12-18
|
|
43
|
+
|
|
44
|
+
* Fix problem using as a static method
|
|
45
|
+
* Refactoring code
|
|
46
|
+
|
|
47
|
+
## 1.0.0 - 2007-12-14
|
|
48
|
+
|
|
49
|
+
* Project creation
|
data/Gemfile
ADDED
data/LICENSE
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
(The MIT License)
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2007 Benjamin Francisoud
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
6
|
+
a copy of this software and associated documentation files (the
|
|
7
|
+
'Software'), to deal in the Software without restriction, including
|
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
11
|
+
the following conditions:
|
|
12
|
+
|
|
13
|
+
The above copyright notice and this permission notice shall be
|
|
14
|
+
included in all copies or substantial portions of the Software.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
19
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
|
20
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
21
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
|
22
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# NaturalSort
|
|
2
|
+
|
|
3
|
+
[](http://travis-ci.org/johnnyshields/naturalsort)
|
|
4
|
+
[](https://codeclimate.com/github/johnnyshields/naturalsort)
|
|
5
|
+
|
|
6
|
+
NaturalSort is a simple library which implements a natural, human-friendly alphanumeric sort in Ruby.
|
|
7
|
+
|
|
8
|
+
#### Fork from RubyForge-hosted NaturalSort gem
|
|
9
|
+
|
|
10
|
+
This Github repo `johnyshields/naturalsort` is an update of the Benjamin Francisoud's original NaturalSort gem,
|
|
11
|
+
hosted on RubyForge at http://rubyforge.org/projects/naturalsort. It has been forked from version 1.1.1
|
|
12
|
+
which was released on 2010-07-21. The first new release from this Github repo is version 1.2.0.
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
```ruby
|
|
17
|
+
%w(a1 a11 a12 a2 a21).natural_sort #=> %w(a1 a2 a11 a12 a21)
|
|
18
|
+
%w(a b c A B C).natural_sort #=> %w(A a B b C c)
|
|
19
|
+
%w(x__2 x_1).natural_sort #=> %w(x_1 x__2)
|
|
20
|
+
%w(x2-y08 x2-g8 x2-y7 x8-y8).natural_sort #=> %w(x2-g8 x2-y7 x2-y08 x8-y8)
|
|
21
|
+
%w(x02-y08 x02-g8 x2-y7 x8-y8).natural_sort #=> %w(x02-g8 x2-y7 x02-y08 x8-y8)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Features
|
|
25
|
+
|
|
26
|
+
* Sort case insensitive
|
|
27
|
+
* Sort underscore insensitive
|
|
28
|
+
* Sort filename matching patterns
|
|
29
|
+
* Sort mixed alpha and numeric "abc1", "abc12", "abc2", "a1b2" in correct order
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
#### With Bundler
|
|
34
|
+
|
|
35
|
+
In your `Gemfile`:
|
|
36
|
+
|
|
37
|
+
```ruby
|
|
38
|
+
gem 'naturalsort'
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
or to optionally extend Ruby native objects:
|
|
42
|
+
|
|
43
|
+
```ruby
|
|
44
|
+
gem 'naturalsort', :require => 'natural_sort_kernel'
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
#### From Command Line
|
|
48
|
+
|
|
49
|
+
```cmd
|
|
50
|
+
$ gem install naturalsort
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## Usage
|
|
54
|
+
|
|
55
|
+
#### Extend Ruby native enumerable objects
|
|
56
|
+
|
|
57
|
+
`require 'natural_sort_kernel'` adds `natural_sort` methods to all native Ruby enumerable objects (Array, Hash, etc...)
|
|
58
|
+
|
|
59
|
+
```ruby
|
|
60
|
+
require 'natural_sort_kernel'
|
|
61
|
+
|
|
62
|
+
sorted = %w(a b c A B C).natural_sort
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
#### Use as a module function
|
|
66
|
+
|
|
67
|
+
```ruby
|
|
68
|
+
require 'natural_sort' # unless using Bundler
|
|
69
|
+
|
|
70
|
+
sorted = NaturalSort.sort %w(a b c d A B C D)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### Use comparator function as a standalone
|
|
74
|
+
|
|
75
|
+
Adds `natural_sort` methods to Ruby native enumerable objects (Array, Hash, etc...)
|
|
76
|
+
|
|
77
|
+
```ruby
|
|
78
|
+
person_1 = Person.new('Moe')
|
|
79
|
+
person_2 = Person.new('Larry')
|
|
80
|
+
person_3 = Person.new('Curly')
|
|
81
|
+
|
|
82
|
+
[person_1, person_2, person_3].sort{|a,b| NaturalSort.comparator(a.name, b.name)} #=> [person_3, person_2, person_1]
|
|
83
|
+
|
|
84
|
+
sorted = %w(a b c A B C).natural_sort
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
#### Include into your own objects
|
|
88
|
+
|
|
89
|
+
Can be used to add `#natural_sort` method to on any enumerable object or any object which implements `#to_a`
|
|
90
|
+
|
|
91
|
+
```ruby
|
|
92
|
+
class TodoList < Array
|
|
93
|
+
include NaturalSort
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
todo_list = TodoList.new
|
|
97
|
+
todo_list << 'Wash car'
|
|
98
|
+
todo_list << 'Water plants'
|
|
99
|
+
todo_list << 'Feed dog'
|
|
100
|
+
|
|
101
|
+
todo_list.natural_sort #=> ['Feed dog', 'Wash car', 'Water plants']
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Authors
|
|
105
|
+
|
|
106
|
+
* [Benjamin Francisoud](http://www.google.com/profiles/benjamin.francisoud)
|
|
107
|
+
* [Johnny Shields](http://github.com/johnnyshields) (version 1.2.0+)
|
|
108
|
+
|
|
109
|
+
## Contributing
|
|
110
|
+
|
|
111
|
+
Fork -> Patch -> Spec -> Push -> Pull Request
|
|
112
|
+
|
|
113
|
+
## Related Links
|
|
114
|
+
|
|
115
|
+
Links related to the natural sorting problem:
|
|
116
|
+
|
|
117
|
+
* http://www.codinghorror.com/blog/archives/001018.html
|
|
118
|
+
* http://sourcefrog.net/projects/natsort/
|
|
119
|
+
* http://be2.php.net/natsort
|
|
120
|
+
* http://www.wellho.net/forum/Programming-in-Python-and-Ruby/Python-Sort-Order.html
|
|
121
|
+
* http://www.davekoelle.com/alphanum.html
|
|
122
|
+
* http://rikkus.info/arch/sensible_sort.rb
|
|
123
|
+
* http://weblog.masukomi.org/2007/12/10/alphabetical-asciibetical
|
|
124
|
+
* http://nedbatchelder.com/blog/200712.html#e20071211T054956
|
|
125
|
+
|
|
126
|
+
## License
|
|
127
|
+
|
|
128
|
+
Copyright (c) 2007 Benjamin Francisoud
|
|
129
|
+
|
|
130
|
+
Licensed under the MIT License. Refer to LICENSE for details.
|
data/Rakefile
CHANGED
|
@@ -1,30 +1,13 @@
|
|
|
1
|
-
|
|
1
|
+
#!/usr/bin/env rake
|
|
2
|
+
# -*- mode: ruby -*-
|
|
2
3
|
|
|
3
4
|
require 'rubygems'
|
|
4
|
-
require 'hoe'
|
|
5
5
|
require './lib/natural_sort.rb'
|
|
6
|
+
require 'rake/testtask'
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
p.rubyforge_name = 'naturalsort'
|
|
9
|
-
p.author = 'Benjamin Francisoud'
|
|
10
|
-
p.email = 'pub.cog@gmail.com'
|
|
11
|
-
p.summary = 'NaturalSort is a small and simple library to implements a natural or human friendly alphabetical sort in ruby.'
|
|
12
|
-
p.description = p.paragraphs_of('README.txt', 2..5).join("\n\n")
|
|
13
|
-
p.url = p.paragraphs_of('README.txt', 0).first.split(/\n/)[1..-1]
|
|
14
|
-
p.changes = p.paragraphs_of('History.txt', 0..1).join("\n\n")
|
|
15
|
-
p.remote_rdoc_dir = '' # Release to root
|
|
16
|
-
p.need_zip = true
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
SVN = 'svn+ssh://cogito@rubyforge.org/var/svn/naturalsort'
|
|
8
|
+
task :default => :test
|
|
20
9
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
10
|
+
Rake::TestTask.new do |t|
|
|
11
|
+
t.libs << 'test'
|
|
12
|
+
t.test_files = FileList['test/**/test_*.rb']
|
|
24
13
|
end
|
|
25
|
-
|
|
26
|
-
task :svn_tag do
|
|
27
|
-
`svn copy #{SVN}/trunk #{SVN}/tags/#{NaturalSort::VERSION} -m "create tag"`
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
# vim: syntax=Ruby
|
data/lib/natural_sort.rb
CHANGED
|
@@ -1,102 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
# or
|
|
6
|
-
# require 'natural_sort_kernel'
|
|
7
|
-
#
|
|
8
|
-
# ['a', 'b', 'A', 'B'].natural_sort #=> ['A', 'a', 'B', 'b']
|
|
9
|
-
module NaturalSort
|
|
10
|
-
VERSION = '1.1.1'
|
|
11
|
-
|
|
12
|
-
# call-seq:
|
|
13
|
-
# NaturalSort::naturalsort(object) => array
|
|
14
|
-
#
|
|
15
|
-
# Static method to sort.
|
|
16
|
-
#
|
|
17
|
-
# *Usage*
|
|
18
|
-
# NaturalSort::naturalsort ['a1', 'a12', 'a2'] #=> ['a1', 'a2', 'a12']
|
|
19
|
-
#
|
|
20
|
-
# <tt>object</tt> can by any object that has to_a method.
|
|
21
|
-
def self.naturalsort(object)
|
|
22
|
-
sorted = object.to_a.sort do |a,b|
|
|
23
|
-
sa, sb = a.to_s, b.to_s
|
|
24
|
-
if ((sa.downcase <=> sb.downcase) == 0) then sa <=> sb
|
|
25
|
-
else
|
|
26
|
-
na, nb = check_regexp(sa, sb)
|
|
27
|
-
na <=> nb
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
# call-seq:
|
|
33
|
-
# object.natural_sort => array
|
|
34
|
-
#
|
|
35
|
-
# Main method to sort (other are just aliases).
|
|
36
|
-
#
|
|
37
|
-
# *Usage*
|
|
38
|
-
# require 'natural_sort'
|
|
39
|
-
# include NaturalSort
|
|
40
|
-
#
|
|
41
|
-
# object.natural_sort #=> ['a1', 'a2', 'a12']
|
|
42
|
-
#
|
|
43
|
-
# <tt>object</tt> can by any object that has a method <tt>to_a</tt>
|
|
44
|
-
#
|
|
45
|
-
# See <tt>natural_sort_kernel.rb</tt> to add natural sort methods to default ruby objects.
|
|
46
|
-
# Enumerable , Array, Range, Set, Hash
|
|
47
|
-
def natural_sort
|
|
48
|
-
NaturalSort::naturalsort(to_a)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
private
|
|
52
|
-
|
|
53
|
-
def self.check_regexp(sa, sb)
|
|
54
|
-
regexp = /(^|\D+)(\d+|(\D$))/
|
|
55
|
-
ma, mb = multireg(regexp,sa), multireg(regexp,sb)
|
|
56
|
-
it = 0
|
|
57
|
-
equal = 0
|
|
58
|
-
ret = ["",""]
|
|
59
|
-
numeric = /(\d+)/
|
|
60
|
-
while (it < [ma.size,mb.size].min) and (equal==0)
|
|
61
|
-
if (ma[it] and mb[it]) and (ma[it][1] and mb[it][1]) \
|
|
62
|
-
and (numeric.match ma[it][0] and numeric.match mb[it][0])
|
|
63
|
-
l = [ma[it][2].size,mb[it][2].size].max
|
|
64
|
-
ret = [format(ma[it], l), format(mb[it], l)]
|
|
65
|
-
else
|
|
66
|
-
ret = [ma[it][0].downcase, mb[it][0].downcase]
|
|
67
|
-
end
|
|
68
|
-
equal = ret[0] <=> ret[1]
|
|
69
|
-
it+=1
|
|
70
|
-
end
|
|
71
|
-
return ret[0], ret[1]
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def check_regexp(sa, sb)
|
|
75
|
-
NaturalSort::check_regexp(sa, sb)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
# format([a, 1], 3) => a001
|
|
79
|
-
# add leading zero
|
|
80
|
-
def self.format(match_data, length)
|
|
81
|
-
match_data[1].gsub("_", "").downcase + ("%0#{length}d" % match_data[2].to_i)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def format(match_data, length)
|
|
85
|
-
NaturalSort::format(match_data, length)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
# return an array with
|
|
89
|
-
# rgpx matchdata on str
|
|
90
|
-
def self.multireg rgpx, str
|
|
91
|
-
result = []
|
|
92
|
-
while rgpx.match str
|
|
93
|
-
result.push rgpx.match(str)
|
|
94
|
-
str = rgpx.match(str).post_match
|
|
95
|
-
end
|
|
96
|
-
result
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def multireg rgpx, str
|
|
100
|
-
NaturalSort::multireg(rgpx, str)
|
|
101
|
-
end
|
|
102
|
-
end
|
|
1
|
+
|
|
2
|
+
require 'natural_sort/version'
|
|
3
|
+
require 'natural_sort/engine'
|
|
4
|
+
require 'natural_sort/base'
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Public: The public interface for NaturalSort module
|
|
2
|
+
# For method descriptions refer to NaturalSort::Engine
|
|
3
|
+
#
|
|
4
|
+
# Examples
|
|
5
|
+
#
|
|
6
|
+
# require 'natural_sort'
|
|
7
|
+
# NaturalSort.sort ['a1', 'a12', 'a2'] #=> ['a1', 'a2', 'a12']
|
|
8
|
+
#
|
|
9
|
+
# # or
|
|
10
|
+
#
|
|
11
|
+
# require 'natural_sort_kernel'
|
|
12
|
+
# ['a', 'b', 'A', 'B'].natural_sort #=> ['A', 'a', 'B', 'b']
|
|
13
|
+
module NaturalSort
|
|
14
|
+
|
|
15
|
+
class << self
|
|
16
|
+
extend Forwardable
|
|
17
|
+
|
|
18
|
+
# Public: sort
|
|
19
|
+
#
|
|
20
|
+
# Signature
|
|
21
|
+
#
|
|
22
|
+
# NaturalSort.sort(object)
|
|
23
|
+
#
|
|
24
|
+
# Refer to NaturalSort::Engine.sort
|
|
25
|
+
def_delegator :'NaturalSort::Engine', :sort
|
|
26
|
+
|
|
27
|
+
# Public: comparator
|
|
28
|
+
#
|
|
29
|
+
# Signature
|
|
30
|
+
#
|
|
31
|
+
# NaturalSort.comparator(a, b)
|
|
32
|
+
#
|
|
33
|
+
# Refer to NaturalSort::Engine.comparator
|
|
34
|
+
def_delegator :'NaturalSort::Engine', :comparator
|
|
35
|
+
|
|
36
|
+
# Deprecated: Alias to NaturalSort.sort. Was deprecated in version 1.2.0.
|
|
37
|
+
# To be removed in version 2.0.0 (according to semver)
|
|
38
|
+
#
|
|
39
|
+
# object - the object to sort, which must either be an Enumerable or implement #to_a to be meaningful.
|
|
40
|
+
#
|
|
41
|
+
# Returns a sorted version of the object.
|
|
42
|
+
def naturalsort(object)
|
|
43
|
+
warn('NaturalSort.naturalsort is deprecated and will be removed. Use NaturalSort.sort instead')
|
|
44
|
+
NaturalSort::Engine.sort(object)
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Public: Main method to sort (other are just aliases). To be used when including
|
|
49
|
+
# NaturalSort into another object. Delegates to NaturalSort::Engine.sort
|
|
50
|
+
#
|
|
51
|
+
# Note that the object must either be an Enumerable or implement #to_a to be meaningful.
|
|
52
|
+
#
|
|
53
|
+
# Returns a sorted version of the object.
|
|
54
|
+
#
|
|
55
|
+
# Examples
|
|
56
|
+
#
|
|
57
|
+
# require 'natural_sort'
|
|
58
|
+
#
|
|
59
|
+
# class MyObject
|
|
60
|
+
# include NaturalSort
|
|
61
|
+
# def to_a
|
|
62
|
+
# ['a3, a2, a1']
|
|
63
|
+
# end
|
|
64
|
+
# end
|
|
65
|
+
def natural_sort
|
|
66
|
+
NaturalSort::Engine.sort(self)
|
|
67
|
+
end
|
|
68
|
+
end
|