Sha256: ac88061870eac3c06a39b17aa9494276623bf124c9cc0167ae132fde3c8e3f3a

Contents?: true

Size: 1.5 KB

Versions: 3

Compression:

Stored size: 1.5 KB

Contents

#!/usr/bin/env ruby
# UmlautSort -- oddb -- 07.07.2003 -- mhuggler@ywesee.com

module ODDB
	module UmlautSort
    FILTER_PAIRS = [
      [/[ÅÁÂÀÃĄǍĂĀȦåáâàãąǎăāȧ]/u, 'a'], [/[Ḃḃ]/u, 'b'], [/[ÇĈČĆĊçĉčćċ]/u, 'c'],
      [/[ḐĐÐĎḊḑđðďḋ]/u, 'd'], [/[ËÉÊÈȨĘĚĔẼĒĖëéêèȩęěĕẽēė]/u, 'e'],
      [/[ÞḞþḟ]/u, 'f'], [/[ĢǦĞǴĜḠĠģǧğǵĝḡġ]/u, 'g'], [/[ȞĤḦḨḢȟĥḧḩḣ]/u, 'h'],
      [/[ÏÍÎÌĮǏĬĨİïíîìįǐĭĩı]/u, 'i'], [/[Ĵĵ]/u, 'j'], [/[ǨḰĶǩḱķ]/u, 'k'],
      [/[ŁĹĽĻłĺľļ]/u, 'l'], [/[ḾṀḿṁ]/u, 'm'], [/[ŇŃÑǸŅṄňńñǹņṅ]/u, 'n'],
      [/[ÓÔÒÕŌŎǪǑȮóôòõōŏøǫǒȯ]/u, 'o'], [/[ṔṖṕṗ]/u, 'p'], [/[ŘŔŖṘřŕŗṙ]/u, 'r'],
      [/[ŚŜŠŞṠśŝšşṡ]/u, 's'], [/[ŤŢṪťţṫ]/u, 't'],
      [/[ÚÛÙŲǗǓǙǛŨŬŮǕúûùųǘǔǚǜũŭůǖ]/u, 'u'], [/[Ṽṽ]/u, 'v'],
      [/[ẂŴẀẄẆẃŵẁẅẇ]/u, 'w'], [/[ẌẊẍẋ]/u, 'x'], [/[ŸẎỸỲŶÝȲÿẏỹỳŷýȳ]/u, 'y'],
      [/[ŽŹẐŻžźẑż]/u, 'z']
    ]
		def sort_model
			if(self::class::SORT_DEFAULT && (@session.event != :sort))
				@model = @model.sort_by { |item| 
					umlaut_filter(item.send(self::class::SORT_DEFAULT))
				} 
			end
		end
    def umlaut_filter(itm)
      if itm.kind_of? String
        itm = itm.downcase
        FILTER_PAIRS.each do |search, replace|
          itm.gsub! search, replace
        end
        itm
      else
        itm
      end
    end
	end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
oddb.org-1.0.2 src/util/umlautsort.rb
oddb.org-1.0.1 src/util/umlautsort.rb
oddb.org-1.0.0 src/util/umlautsort.rb