This library implements alphabetical sorting according to given alphabet scheme. Currently, only Czech alphabet is included, but it is super-easy to create a new one.

Setup

Install the gem:

gem install sort-by-alphabet

Or require it into Rails:

gem require "sort-by-alphabet"

Requirements

Support of mb_chars, i.e. ActiveSupport in practice.

Usage

Classical sort puts accented chars after normal:

%w{nazdar ahoj čau}.sort # => %w{ahoj nazdar čau}

sort_by_alphabet does a better job:

%w{nazdar ahoj čau}.sort_by_alphabet(CzechAlphabet) # => %w{ahoj čau nazdar}

sort_by_alphabet can take a block which acts similarly as that in sort_by:

Something.all.sort_by_alphabet(CzechAlphabet) {|o| o.title}

You can also make a class alphabetically comparable, enabling sorting:

class Something
  comparable_by_alphabet(CzechAlphabet)
end</code>

<code>a = Something.new
b = Something.new
c = Something.new</code>

<code># the following comparisons will be using to_s and lexical order given by Czech alphabet</code>

<code>a <=> b</code>

<code>[a, b, c].sort 

or use a block, e.g. for case insensitivity:

class SomethingElse
  comparable_by_alphabet(CzechAlphabet) {|obj| obj.mb_chars.downcase}
end