NaturalSort
NaturalSort is a simple library which implements a natural, human-friendly alphanumeric sort in Ruby.
Examples
%w[a1 a11 a12 a2 a21].natural_sort
%w[a b c A B C].natural_sort
%w[x__2 x_1].natural_sort
%w[x2-y08 x2-g8 x2-y7 x8-y8].natural_sort
%w[x02-y08 x02-g8 x2-y7 x8-y8].natural_sort
Features
- Sort case insensitive
- Sort underscore insensitive
- Sort filename matching patterns
- Sort mixed alpha and numeric "abc1", "abc12", "abc2", "a1b2" in correct order
Install
With Bundler
In your Gemfile
:
gem 'naturalsort'
or to optionally extend Ruby native objects:
gem 'naturalsort', require: 'natural_sort_kernel'
From Command Line
$ gem install naturalsort
Usage
Extend Ruby native enumerable objects
require 'natural_sort_kernel'
adds natural_sort
methods to all native Ruby enumerable objects (Array, Hash, etc...)
require 'natural_sort_kernel'
%w[a b c A B C].natural_sort
Use as a module function
require 'natural_sort'
NaturalSort.sort %w[a b c d A B C D]
Use comparator function as a standalone
Adds natural_sort
methods to Ruby native enumerable objects (Array, Hash, etc...)
person_1 = Person.new('Moe')
person_2 = Person.new('Larry')
person_3 = Person.new('Curly')
[person_1, person_2, person_3].sort{|a,b| NaturalSort.comparator(a.name, b.name)}
%w[a b c A B C].natural_sort
Include into your own objects
Can be used to add #natural_sort
method to on any enumerable object or any object which implements #to_a
class TodoList < Array
include NaturalSort
end
todo_list = TodoList.new
todo_list << 'Wash car'
todo_list << 'Water plants'
todo_list << 'Feed dog'
todo_list.natural_sort
Authors
Contributing
Fork -> Patch -> Spec -> Push -> Pull Request
Related Links
Links related to the natural sorting problem:
License
Copyright (c) 2007 Benjamin Francisoud
Licensed under the MIT License. Refer to LICENSE for details.