Class: NameCase
- Inherits:
-
String
- Object
- String
- NameCase
- Defined in:
- lib/version.rb,
lib/namecase.rb
Constant Summary collapse
- Version =
'1.0.2'
Instance Method Summary collapse
-
#nc ⇒ Object
Returns a new
String
with the contents properly namecased. -
#nc! ⇒ Object
Modifies str in place and properly namecases the string.
Instance Method Details
#nc ⇒ Object
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 |