Class: NameCase

Inherits:
String
  • Object
show all
Defined in:
lib/version.rb,
lib/namecase.rb

Constant Summary collapse

Version =
'1.0.2'

Instance Method Summary collapse

Instance Method Details

#ncObject

Returns a new String with the contents properly namecased



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/namecase.rb', line 6

def nc
  if respond_to?(:chars)
    localstring = chars.downcase.to_s
    localstring.gsub!(/\b\w/) { |first| first.chars.upcase }
    localstring.gsub!(/\'\w\b/) { |c| c.chars.downcase } # Lowercase 's
  else
    localstring = downcase
    localstring.gsub!(/\b\w/) { |first| first.upcase }
    localstring.gsub!(/\'\w\b/) { |c| c.downcase } # Lowercase 's
  end

  if localstring =~ /\bMac[A-Za-z]{2,}[^aciozj]\b/ or localstring =~ /\bMc/
    localstring.gsub!(/\b(Ma?c)([A-Za-z]+)/) { |match| $1 + $2.capitalize }

    # Now fix "Mac" exceptions
    localstring.gsub!(/\bMacEvicius/, 'Macevicius')
    localstring.gsub!(/\bMacHado/, 'Machado')
    localstring.gsub!(/\bMacHar/, 'Machar')
    localstring.gsub!(/\bMacHin/, 'Machin')
    localstring.gsub!(/\bMacHlin/, 'Machlin')
    localstring.gsub!(/\bMacIas/, 'Macias')
    localstring.gsub!(/\bMacIulis/, 'Maciulis')
    localstring.gsub!(/\bMacKie/, 'Mackie')
    localstring.gsub!(/\bMacKle/, 'Mackle')
    localstring.gsub!(/\bMacKlin/, 'Macklin')
    localstring.gsub!(/\bMacQuarie/, 'Macquarie')
  end
  localstring.gsub!('Macmurdo','MacMurdo')

  # Fixes for "son (daughter) of" etc
  localstring.gsub!(/\bAl(?=\s+\w)/, 'al')  # al Arabic or forename Al.
  localstring.gsub!(/\bAp\b/, 'ap')         # ap Welsh.
  localstring.gsub!(/\bBen(?=\s+\w)/,'ben') # ben Hebrew or forename Ben.
  localstring.gsub!(/\bDell([ae])\b/,'dell\1')  # della and delle Italian.
  localstring.gsub!(/\bD([aeiu])\b/,'d\1')   # da, de, di Italian; du French.
  localstring.gsub!(/\bDe([lr])\b/,'de\1')   # del Italian; der Dutch/Flemish.
  localstring.gsub!(/\bEl\b/,'el')   # el Greek or El Spanish.
  localstring.gsub!(/\bLa\b/,'la')   # la French or La Spanish.
  localstring.gsub!(/\bL([eo])\b/,'l\1')      # lo Italian; le French.
  localstring.gsub!(/\bVan(?=\s+\w)/,'van')  # van German or forename Van.
  localstring.gsub!(/\bVon\b/,'von')  # von Dutch/Flemish

  # Fix roman numeral names
  localstring.gsub!(
    / \b ( (?: [Xx]{1,3} | [Xx][Ll]   | [Ll][Xx]{0,3} )?
           (?: [Ii]{1,3} | [Ii][VvXx] | [Vv][Ii]{0,3} )? ) \b /x
  ) { |match| match.upcase }

  localstring
end

#nc!Object

Modifies str in place and properly namecases the string.



58
59
60
# File 'lib/namecase.rb', line 58

def nc!
  self.gsub!(self, self.nc)
end