namecase 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. data/README +39 -0
  2. data/doc/CVS/Entries +8 -0
  3. data/doc/CVS/Repository +1 -0
  4. data/doc/CVS/Root +1 -0
  5. data/doc/classes/CVS/Entries +6 -0
  6. data/doc/classes/CVS/Repository +1 -0
  7. data/doc/classes/CVS/Root +1 -0
  8. data/doc/classes/NameCase.html +158 -0
  9. data/doc/classes/NameCase.src/CVS/Entries +3 -0
  10. data/doc/classes/NameCase.src/CVS/Repository +1 -0
  11. data/doc/classes/NameCase.src/CVS/Root +1 -0
  12. data/doc/classes/NameCase.src/M000001.html +59 -0
  13. data/doc/classes/NameCase.src/M000002.html +18 -0
  14. data/doc/classes/String.html +159 -0
  15. data/doc/classes/String.src/CVS/Entries +3 -0
  16. data/doc/classes/String.src/CVS/Repository +1 -0
  17. data/doc/classes/String.src/CVS/Root +1 -0
  18. data/doc/classes/String.src/M000004.html +59 -0
  19. data/doc/classes/String.src/M000005.html +18 -0
  20. data/doc/classes/TestNameCase.html +167 -0
  21. data/doc/classes/TestNameCase.src/CVS/Entries +6 -0
  22. data/doc/classes/TestNameCase.src/CVS/Repository +1 -0
  23. data/doc/classes/TestNameCase.src/CVS/Root +1 -0
  24. data/doc/classes/TestNameCase.src/M000001.html +38 -0
  25. data/doc/classes/TestNameCase.src/M000002.html +20 -0
  26. data/doc/classes/TestNameCase.src/M000003.html +38 -0
  27. data/doc/classes/TestNameCase.src/M000004.html +21 -0
  28. data/doc/classes/TestNameCase.src/M000005.html +21 -0
  29. data/doc/created.rid +1 -0
  30. data/doc/files/CVS/Entries +3 -0
  31. data/doc/files/CVS/Repository +1 -0
  32. data/doc/files/CVS/Root +1 -0
  33. data/doc/files/README.html +162 -0
  34. data/doc/files/lib/CVS/Entries +2 -0
  35. data/doc/files/lib/CVS/Repository +1 -0
  36. data/doc/files/lib/CVS/Root +1 -0
  37. data/doc/files/lib/namecase_rb.html +101 -0
  38. data/doc/files/test/CVS/Entries +2 -0
  39. data/doc/files/test/CVS/Repository +1 -0
  40. data/doc/files/test/CVS/Root +1 -0
  41. data/doc/files/test/test_namecase_rb.html +109 -0
  42. data/doc/fr_class_index.html +28 -0
  43. data/doc/fr_file_index.html +28 -0
  44. data/doc/fr_method_index.html +31 -0
  45. data/doc/index.html +24 -0
  46. data/doc/rdoc-style.css +208 -0
  47. data/lib/CVS/Entries +2 -0
  48. data/lib/CVS/Repository +1 -0
  49. data/lib/CVS/Root +1 -0
  50. data/lib/namecase.rb +53 -0
  51. data/test/CVS/Entries +2 -0
  52. data/test/CVS/Repository +1 -0
  53. data/test/CVS/Root +1 -0
  54. data/test/test_namecase.rb +44 -0
  55. metadata +110 -0
@@ -0,0 +1,2 @@
1
+ /namecase.rb/1.1.1.1/Mon Nov 7 23:24:12 2005//
2
+ D
@@ -0,0 +1 @@
1
+ namecase/lib
@@ -0,0 +1 @@
1
+ :ext:aaronp@rubyforge.org:/var/cvs/namecase
@@ -0,0 +1,53 @@
1
+ class NameCase < String
2
+
3
+ # Returns a new +String+ with the contents properly namecased
4
+ def nc
5
+ localstring = self.downcase
6
+ localstring.gsub!(/\b\w/) { |first| first.upcase }
7
+ localstring.gsub!("\'\w\b") { |c| c.downcase } # Lowercase 's
8
+
9
+ if localstring =~ /\bMac[A-Za-z]{2,}[^aciozj]\b/ or localstring =~ /\bMc/
10
+ localstring.gsub!(/\b(Ma?c)([A-Za-z]+)/) { |match| $1 + $2.capitalize }
11
+
12
+ # Now fix "Mac" exceptions
13
+ localstring.gsub!(/\bMacEvicius/, 'Macevicius')
14
+ localstring.gsub!(/\bMacHado/, 'Machado')
15
+ localstring.gsub!(/\bMacHar/, 'Machar')
16
+ localstring.gsub!(/\bMacHin/, 'Machin')
17
+ localstring.gsub!(/\bMacHlin/, 'Machlin')
18
+ localstring.gsub!(/\bMacIas/, 'Macias')
19
+ localstring.gsub!(/\bMacIulis/, 'Maciulis')
20
+ localstring.gsub!(/\bMacKie/, 'Mackie')
21
+ localstring.gsub!(/\bMacKle/, 'Mackle')
22
+ localstring.gsub!(/\bMacKlin/, 'Macklin')
23
+ localstring.gsub!(/\bMacQuarie/, 'Macquarie')
24
+ end
25
+ localstring.gsub!('Macmurdo','MacMurdo')
26
+
27
+ # Fixes for "son (daughter) of" etc
28
+ localstring.gsub!(/\bAl(?=\s+\w)/, 'al') # al Arabic or forename Al.
29
+ localstring.gsub!(/\bAp\b/, 'ap') # ap Welsh.
30
+ localstring.gsub!(/\bBen(?=\s+\w)/,'ben') # ben Hebrew or forename Ben.
31
+ localstring.gsub!(/\bDell([ae])\b/,'dell\1') # della and delle Italian.
32
+ localstring.gsub!(/\bD([aeiu])\b/,'d\1') # da, de, di Italian; du French.
33
+ localstring.gsub!(/\bDe([lr])\b/,'de\1') # del Italian; der Dutch/Flemish.
34
+ localstring.gsub!(/\bEl\b/,'el') # el Greek or El Spanish.
35
+ localstring.gsub!(/\bLa\b/,'la') # la French or La Spanish.
36
+ localstring.gsub!(/\bL([eo])\b/,'l\1') # lo Italian; le French.
37
+ localstring.gsub!(/\bVan(?=\s+\w)/,'van') # van German or forename Van.
38
+ localstring.gsub!(/\bVon\b/,'von') # von Dutch/Flemish
39
+
40
+ # Fix roman numeral names
41
+ localstring.gsub!(
42
+ / \b ( (?: [Xx]{1,3} | [Xx][Ll] | [Ll][Xx]{0,3} )?
43
+ (?: [Ii]{1,3} | [Ii][VvXx] | [Vv][Ii]{0,3} )? ) \b /x
44
+ ) { |match| match.upcase }
45
+
46
+ localstring
47
+ end
48
+
49
+ # Modifies _str_ in place and properly namecases the string.
50
+ def nc!
51
+ self.gsub!(self, self.nc)
52
+ end
53
+ end
@@ -0,0 +1,2 @@
1
+ /test_namecase.rb/1.1.1.1/Mon Nov 7 23:50:09 2005//
2
+ D
@@ -0,0 +1 @@
1
+ namecase/test
@@ -0,0 +1 @@
1
+ :ext:aaronp@rubyforge.org:/var/cvs/namecase
@@ -0,0 +1,44 @@
1
+ $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
+
3
+ require 'namecase'
4
+ require 'test/unit'
5
+
6
+ class TestNameCase < Test::Unit::TestCase
7
+ def setup
8
+ @proper_names = [
9
+ "Keith", "Leigh-Williams", "McCarthy",
10
+ "O'Callaghan", "St. John", "von Streit",
11
+ "van Dyke", "Van", "ap Llwyd Dafydd",
12
+ "al Fahd", "Al",
13
+ "el Grecco",
14
+ "ben Gurion", "Ben",
15
+ "da Vinci",
16
+ "di Caprio", "du Pont", "de Legate",
17
+ "del Crond", "der Sind", "van der Post",
18
+ "von Trapp", "la Poisson", "le Figaro",
19
+ "Mack Knife", "Dougal MacDonald",
20
+ # Mac exceptions
21
+ "Machin", "Machlin", "Machar",
22
+ "Mackle", "Macklin", "Mackie",
23
+ "Macquarie", "Machado", "Macevicius",
24
+ "Maciulis", "Macias", "MacMurdo",
25
+ # Roman numerals
26
+ "Henry VIII", "Louis III", "Louis XIV",
27
+ "Charles II", "Fred XLIX",
28
+ ]
29
+ end
30
+
31
+ def test_namecase
32
+ @proper_names.each do |name|
33
+ nc_name = NameCase.new(name)
34
+ assert_equal(name, nc_name.downcase.nc)
35
+ end
36
+ end
37
+
38
+ def test_namecase_modify
39
+ @proper_names.each do |name|
40
+ nc_name = NameCase.new(name)
41
+ assert_equal(name, nc_name.downcase.nc!)
42
+ end
43
+ end
44
+ end
metadata ADDED
@@ -0,0 +1,110 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.10
3
+ specification_version: 1
4
+ name: namecase
5
+ version: !ruby/object:Gem::Version
6
+ version: 1.0.0
7
+ date: 2005-11-07
8
+ summary: "NameCase is a Ruby implementation of Lingua::EN::NameCase, a library for
9
+ converting strings to be properly cased."
10
+ require_paths:
11
+ - lib
12
+ email: aaronp@rubyforge.org
13
+ homepage: namecase.rubyforge.org
14
+ rubyforge_project: namecase
15
+ description:
16
+ autorequire: NameCase
17
+ default_executable:
18
+ bindir: bin
19
+ has_rdoc: true
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ -
23
+ - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ authors:
29
+ - Aaron Patterson
30
+ files:
31
+ - test/CVS
32
+ - test/test_namecase.rb
33
+ - test/CVS/Entries
34
+ - test/CVS/Repository
35
+ - test/CVS/Root
36
+ - lib/CVS
37
+ - lib/namecase.rb
38
+ - lib/CVS/Entries
39
+ - lib/CVS/Repository
40
+ - lib/CVS/Root
41
+ - doc/classes
42
+ - doc/created.rid
43
+ - doc/CVS
44
+ - doc/files
45
+ - doc/fr_class_index.html
46
+ - doc/fr_file_index.html
47
+ - doc/fr_method_index.html
48
+ - doc/index.html
49
+ - doc/rdoc-style.css
50
+ - doc/classes/CVS
51
+ - doc/classes/NameCase.html
52
+ - doc/classes/NameCase.src
53
+ - doc/classes/String.html
54
+ - doc/classes/String.src
55
+ - doc/classes/TestNameCase.html
56
+ - doc/classes/TestNameCase.src
57
+ - doc/classes/CVS/Entries
58
+ - doc/classes/CVS/Repository
59
+ - doc/classes/CVS/Root
60
+ - doc/classes/NameCase.src/CVS
61
+ - doc/classes/NameCase.src/M000001.html
62
+ - doc/classes/NameCase.src/M000002.html
63
+ - doc/classes/NameCase.src/CVS/Entries
64
+ - doc/classes/NameCase.src/CVS/Repository
65
+ - doc/classes/NameCase.src/CVS/Root
66
+ - doc/classes/String.src/CVS
67
+ - doc/classes/String.src/M000004.html
68
+ - doc/classes/String.src/M000005.html
69
+ - doc/classes/String.src/CVS/Entries
70
+ - doc/classes/String.src/CVS/Repository
71
+ - doc/classes/String.src/CVS/Root
72
+ - doc/classes/TestNameCase.src/CVS
73
+ - doc/classes/TestNameCase.src/M000001.html
74
+ - doc/classes/TestNameCase.src/M000002.html
75
+ - doc/classes/TestNameCase.src/M000003.html
76
+ - doc/classes/TestNameCase.src/M000004.html
77
+ - doc/classes/TestNameCase.src/M000005.html
78
+ - doc/classes/TestNameCase.src/CVS/Entries
79
+ - doc/classes/TestNameCase.src/CVS/Repository
80
+ - doc/classes/TestNameCase.src/CVS/Root
81
+ - doc/CVS/Entries
82
+ - doc/CVS/Repository
83
+ - doc/CVS/Root
84
+ - doc/files/CVS
85
+ - doc/files/lib
86
+ - doc/files/README.html
87
+ - doc/files/test
88
+ - doc/files/CVS/Entries
89
+ - doc/files/CVS/Repository
90
+ - doc/files/CVS/Root
91
+ - doc/files/lib/CVS
92
+ - doc/files/lib/namecase_rb.html
93
+ - doc/files/lib/CVS/Entries
94
+ - doc/files/lib/CVS/Repository
95
+ - doc/files/lib/CVS/Root
96
+ - doc/files/test/CVS
97
+ - doc/files/test/test_namecase_rb.html
98
+ - doc/files/test/CVS/Entries
99
+ - doc/files/test/CVS/Repository
100
+ - doc/files/test/CVS/Root
101
+ - README
102
+ test_files:
103
+ - test/test_namecase.rb
104
+ rdoc_options: []
105
+ extra_rdoc_files:
106
+ - README
107
+ executables: []
108
+ extensions: []
109
+ requirements: []
110
+ dependencies: []