Commit 449486a26967c09e3e124671f71f454e8409adb8:
    move name sorting function from icla to person
    prep for reuse purposes (starting with members.txt)


Branch: refs/heads/master
Author: Sam Ruby <[email protected]>
Committer: Sam Ruby <[email protected]>
Pusher: rubys <[email protected]>

------------------------------------------------------------
lib/whimsy/asf.rb                                            | + 
lib/whimsy/asf/icla.rb                                       | + ---------
------------------------------------------------------------
68 changes: 2 additions, 66 deletions.
------------------------------------------------------------


diff --git a/lib/whimsy/asf.rb b/lib/whimsy/asf.rb
index b813d0e..1b4b19c 100644
--- a/lib/whimsy/asf.rb
+++ b/lib/whimsy/asf.rb
@@ -11,6 +11,7 @@
 require_relative 'asf/member'
 require_relative 'asf/site'
 require_relative 'asf/podlings'
+require_relative 'asf/person'
 
 module ASF
   def self.library_mtime
diff --git a/lib/whimsy/asf/icla.rb b/lib/whimsy/asf/icla.rb
index 1578dc5..aafda41 100644
--- a/lib/whimsy/asf/icla.rb
+++ b/lib/whimsy/asf/icla.rb
@@ -122,60 +122,6 @@ def self.each(&block)
       end
     end
 
-    # sort support
-
-    def self.asciize(name)
-      if name.match /[^\x00-\x7F]/
-        # digraphs.  May be culturally sensitive
-        name.gsub! /\u00df/, 'ss'
-        name.gsub! /\u00e4|a\u0308/, 'ae'
-        name.gsub! /\u00e5|a\u030a/, 'aa'
-        name.gsub! /\u00e6/, 'ae'
-        name.gsub! /\u00f1|n\u0303/, 'ny'
-        name.gsub! /\u00f6|o\u0308/, 'oe'
-        name.gsub! /\u00fc|u\u0308/, 'ue'
-
-        # latin 1
-        name.gsub! /[\u00e0-\u00e5]/, 'a'
-        name.gsub! /\u00e7/, 'c'
-        name.gsub! /[\u00e8-\u00eb]/, 'e'
-        name.gsub! /[\u00ec-\u00ef]/, 'i'
-        name.gsub! /[\u00f2-\u00f6]|\u00f8/, 'o'
-        name.gsub! /[\u00f9-\u00fc]/, 'u'
-        name.gsub! /[\u00fd\u00ff]/, 'y'
-
-        # Latin Extended-A
-        name.gsub! /[\u0100-\u0105]/, 'a'
-        name.gsub! /[\u0106-\u010d]/, 'c'
-        name.gsub! /[\u010e-\u0111]/, 'd'
-        name.gsub! /[\u0112-\u011b]/, 'e'
-        name.gsub! /[\u011c-\u0123]/, 'g'
-        name.gsub! /[\u0124-\u0127]/, 'h'
-        name.gsub! /[\u0128-\u0131]/, 'i'
-        name.gsub! /[\u0132-\u0133]/, 'ij'
-        name.gsub! /[\u0134-\u0135]/, 'j'
-        name.gsub! /[\u0136-\u0138]/, 'k'
-        name.gsub! /[\u0139-\u0142]/, 'l'
-        name.gsub! /[\u0143-\u014b]/, 'n'
-        name.gsub! /[\u014C-\u0151]/, 'o'
-        name.gsub! /[\u0152-\u0153]/, 'oe'
-        name.gsub! /[\u0154-\u0159]/, 'r'
-        name.gsub! /[\u015a-\u0162]/, 's'
-        name.gsub! /[\u0162-\u0167]/, 't'
-        name.gsub! /[\u0168-\u0173]/, 'u'
-        name.gsub! /[\u0174-\u0175]/, 'w'
-        name.gsub! /[\u0176-\u0178]/, 'y'
-        name.gsub! /[\u0179-\u017e]/, 'z'
-
-        # denormalized diacritics
-        name.gsub! /[\u0300-\u036f]/, ''
-      end
-
-      name.strip.gsub /[^\w]+/, '-'
-    end
-
-    SUFFIXES = /^([Jj][Rr]\.?|I{2,3}|I?V|VI{1,3}|[A-Z]\.)$/
-
     # rearrange line in an order suitable for sorting
     def self.lname(line)
       return '' if line.start_with? '#'
@@ -187,18 +133,7 @@ def self.lname(line)
       name.sub! /\/\*.+\*\/$/,''
       return '' if name.strip.empty?
 
-      name = name.split.reverse
-      suffix = (name.shift if name.first =~ SUFFIXES)
-      suffix += ' ' + name.shift if name.first =~ SUFFIXES
-      name << name.shift
-      name << name.shift if name.first=='Lewis' and name.last=='Ship'
-      name << name.shift if name.first=='Gallardo' and name.last=='Rivera'
-      name << name.shift if name.first=="S\u00e1nchez" and name.last=='Vega'
-      # name << name.shift if name.first=='van'
-      name.last.sub! /^IJ/, 'Ij'
-      name.unshift(suffix) if suffix
-      name.map! {|word| asciize(word)}
-      name = name.reverse.join(' ')
+      name = ASF::Person.sortable_name(name)
 
       "#{name}:#{rest}"
     end

Reply via email to