def extract_suffix(name)
      return unless name && name.size >= 3

      (name.size - 1).downto(2) do |n|
        suff = nil

        Nameable::Latin::Patterns::SUFFIX.each_pair do |pretty, regex|
          suff = pretty if name[n] =~ regex
        end

        if name[n] =~ Nameable::Latin::Patterns::SUFFIX_ACADEMIC ||
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_PROFESSIONAL ||
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_GENERATIONAL_ROMAN
          suff = name[n].upcase.delete('.')
        end

        if !suff &&
           name.join != name.join.upcase &&
           name[n].length > 1 &&
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_ABBREVIATION
          suff = name[n].upcase.delete('.')
        end

        if suff
          @suffix = @suffix ? "#{suff}, #{@suffix}" : suff
          name.delete_at(n)
        end
      end
    end
def extract_suffix(name)
      return unless name && name.size >= 3

      (name.size - 1).downto(2) do |n|
        suff = nil

        Nameable::Latin::Patterns::SUFFIX.each_pair do |pretty, regex|
          suff = pretty if name[n] =~ regex
        end

        if name[n] =~ Nameable::Latin::Patterns::SUFFIX_ACADEMIC ||
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_PROFESSIONAL ||
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_GENERATIONAL_ROMAN
          suff = name[n].upcase.delete('.')
        end

        if !suff &&
           name.join != name.join.upcase &&
           name[n].length > 1 &&
           name[n] =~ Nameable::Latin::Patterns::SUFFIX_ABBREVIATION
          suff = name[n].upcase.delete('.')
        end

        if suff
          @suffix = @suffix ? "#{suff}, #{@suffix}" : suff
          name.delete_at(n)
        end
      end
    end
name is an Array