namecase 1.1.0 → 2.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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: edf1f1eb5ee71d6065f9b049c27919e030610c82
4
+ data.tar.gz: 692ccc2c2193cc8b89398db68dc76793bd82d64e
5
+ SHA512:
6
+ metadata.gz: 9db51017ca6b45a064ecfda0560a0abff55a8a3576688687b934304a5eba7925869f91c2ca49898d78d3f4bdecd77ec3bb9532362ff24f2ea3f1a30ce6b7ae43
7
+ data.tar.gz: 564562455858eebda4a8f084bc063042c0fd786dddc0082718a62a48d6c4546729f71a60745e2381332d1bcc5d1f9d45d8f9e3658418a85b0a3fe7de6f63df30
File without changes
data/Gemfile ADDED
@@ -0,0 +1,2 @@
1
+ source 'https://rubygems.org'
2
+ gemspec
@@ -1,7 +1,9 @@
1
+ Gemfile
1
2
  History.txt
2
3
  LICENSE.txt
3
4
  Manifest.txt
4
- README.txt
5
+ README.md
5
6
  Rakefile
6
7
  lib/namecase.rb
8
+ namecase.gemspec
7
9
  test/test_namecase.rb
@@ -0,0 +1,39 @@
1
+ # [NameCase](http://namecase.rubyforge.org/)
2
+
3
+ http://namecase.rubyforge.org/
4
+
5
+ ## Description
6
+
7
+ NameCase is a Ruby implementation of `Lingua::EN::NameCase`, a library for
8
+ converting strings to be properly cased. This is good for converting
9
+ denormalized data to human friendly data.
10
+
11
+ ## Example Usage
12
+
13
+ ```ruby
14
+ NameCase("RON BURGUNDY") # => Ron Burgundy
15
+ NameCase("MCDONALDS") # => McDonalds
16
+ ```
17
+
18
+ ## Acknowledgements
19
+
20
+ This library is a port of the Perl library, and owes most of its functionality
21
+ to the [Perl version by Mark Summerfield](https://metacpan.org/release/SUMMER/Lingua-EN-NameCase-1.12). Any bugs in the Ruby port are my
22
+ fault.
23
+
24
+ ## Author
25
+
26
+ Original Version:
27
+ Copyright (c) Mark Summerfield 1998-2002.
28
+ <summer@perlpress.com>
29
+ All Rights Reserved
30
+
31
+ Ruby Version:
32
+ Copyright (c) Aaron Patterson 2006
33
+
34
+ ## License
35
+
36
+ NameCase is distributed under the GPL license. Please see the LICENSE file.
37
+
38
+
39
+ [2]: https://metacpan.org/release/SUMMER/Lingua-EN-NameCase-1.12
data/Rakefile CHANGED
@@ -1,7 +1,11 @@
1
1
  require 'rubygems'
2
2
  require 'hoe'
3
- require './lib/namecase.rb'
4
3
 
5
- Hoe.new('namecase', NameCase::VERSION) do |p|
6
- p.developer('Aaron Patterson', 'aaronp@rubyforge.org')
4
+ Hoe.plugin :doofus, :git, :gemspec
5
+
6
+ Hoe.spec('namecase') do |p|
7
+ self.readme_file = 'README.md'
8
+ developer('Aaron Patterson', 'aaronp@rubyforge.org')
9
+ license 'GPL'
10
+ extra_dev_deps << ['minitest', '~> 4.0']
7
11
  end
@@ -1,42 +1,65 @@
1
- class NameCase < String
2
- VERSION = '1.1.0'
1
+ module NameCase
2
+ VERSION = '2.0.0'
3
3
 
4
- class << self
5
- def nc string
6
- new(string).nc
7
- end
4
+ # Returns a new +String+ with the contents properly namecased
5
+ def nc(options = {})
6
+ NameCase.nc self, options
8
7
  end
9
8
 
10
- # Returns a new +String+ with the contents properly namecased
11
- def nc
12
- localstring = downcase
9
+ # Modifies _str_ in place and properly namecases the string.
10
+ def nc!(options = {})
11
+ NameCase.nc! self, options
12
+ end
13
+
14
+ def self.nc! str, options = {}
15
+ str.replace NameCase.nc(str, options)
16
+ end
17
+
18
+ def self.nc str, options = {}
19
+ options = { :lazy => true, :irish => true }.merge options
20
+
21
+ # Skip if string is mixed case
22
+ if options[:lazy]
23
+ first_letter_lower = str[0] == str.downcase[0]
24
+ all_lower_or_upper = (str.downcase == str || str.upcase == str)
25
+
26
+ return str unless first_letter_lower || all_lower_or_upper
27
+ end
28
+
29
+ localstring = str.downcase
13
30
  localstring.gsub!(/\b\w/) { |first| first.upcase }
14
31
  localstring.gsub!(/\'\w\b/) { |c| c.downcase } # Lowercase 's
15
32
 
16
- if localstring =~ /\bMac[A-Za-z]{2,}[^aciozj]\b/ or localstring =~ /\bMc/
17
- localstring.gsub!(/\b(Ma?c)([A-Za-z]+)/) { |match| $1 + $2.capitalize }
33
+ if options[:irish]
34
+ if localstring =~ /\bMac[A-Za-z]{2,}[^aciozj]\b/ or localstring =~ /\bMc/
35
+ match = localstring.match(/\b(Ma?c)([A-Za-z]+)/)
36
+ localstring.gsub!(/\bMa?c[A-Za-z]+/) { match[1] + match[2].capitalize }
18
37
 
19
- # Now fix "Mac" exceptions
20
- localstring.gsub!(/\bMacEvicius/, 'Macevicius')
21
- localstring.gsub!(/\bMacHado/, 'Machado')
22
- localstring.gsub!(/\bMacHar/, 'Machar')
23
- localstring.gsub!(/\bMacHin/, 'Machin')
24
- localstring.gsub!(/\bMacHlin/, 'Machlin')
25
- localstring.gsub!(/\bMacIas/, 'Macias')
26
- localstring.gsub!(/\bMacIulis/, 'Maciulis')
27
- localstring.gsub!(/\bMacKie/, 'Mackie')
28
- localstring.gsub!(/\bMacKle/, 'Mackle')
29
- localstring.gsub!(/\bMacKlin/, 'Macklin')
30
- localstring.gsub!(/\bMacQuarie/, 'Macquarie')
38
+ # Now fix "Mac" exceptions
39
+ localstring.gsub!(/\bMacEdo/, 'Macedo')
40
+ localstring.gsub!(/\bMacEvicius/, 'Macevicius')
41
+ localstring.gsub!(/\bMacHado/, 'Machado')
42
+ localstring.gsub!(/\bMacHar/, 'Machar')
43
+ localstring.gsub!(/\bMacHin/, 'Machin')
44
+ localstring.gsub!(/\bMacHlin/, 'Machlin')
45
+ localstring.gsub!(/\bMacIas/, 'Macias')
46
+ localstring.gsub!(/\bMacIulis/, 'Maciulis')
47
+ localstring.gsub!(/\bMacKie/, 'Mackie')
48
+ localstring.gsub!(/\bMacKle/, 'Mackle')
49
+ localstring.gsub!(/\bMacKlin/, 'Macklin')
50
+ localstring.gsub!(/\bMacKmin/, 'Mackmin')
51
+ localstring.gsub!(/\bMacQuarie/, 'Macquarie')
52
+ end
53
+ localstring.gsub!('Macmurdo','MacMurdo')
31
54
  end
32
- localstring.gsub!('Macmurdo','MacMurdo')
33
55
 
34
56
  # Fixes for "son (daughter) of" etc
35
57
  localstring.gsub!(/\bAl(?=\s+\w)/, 'al') # al Arabic or forename Al.
36
58
  localstring.gsub!(/\bAp\b/, 'ap') # ap Welsh.
37
59
  localstring.gsub!(/\bBen(?=\s+\w)/,'ben') # ben Hebrew or forename Ben.
38
60
  localstring.gsub!(/\bDell([ae])\b/,'dell\1') # della and delle Italian.
39
- localstring.gsub!(/\bD([aeiu])\b/,'d\1') # da, de, di Italian; du French.
61
+ localstring.gsub!(/\bD([aeiou])\b/,'d\1') # da, de, di Italian; du French; do Brasil
62
+ localstring.gsub!(/\bD([ao]s)\b/,'d\1') # das, dos Brasileiros
40
63
  localstring.gsub!(/\bDe([lr])\b/,'de\1') # del Italian; der Dutch/Flemish.
41
64
  localstring.gsub!(/\bEl\b/,'el') # el Greek or El Spanish.
42
65
  localstring.gsub!(/\bLa\b/,'la') # la French or La Spanish.
@@ -48,17 +71,16 @@ class NameCase < String
48
71
  localstring.gsub!(
49
72
  / \b ( (?: [Xx]{1,3} | [Xx][Ll] | [Ll][Xx]{0,3} )?
50
73
  (?: [Ii]{1,3} | [Ii][VvXx] | [Vv][Ii]{0,3} )? ) \b /x
51
- ) { |match| match.upcase }
74
+ ) { |m| m.upcase }
52
75
 
53
76
  localstring
54
77
  end
78
+ end
55
79
 
56
- # Modifies _str_ in place and properly namecases the string.
57
- def nc!
58
- self.gsub!(self, self.nc)
59
- end
80
+ def NameCase(string, options = {})
81
+ NameCase.nc string, options
60
82
  end
61
83
 
62
- def NameCase string
63
- NameCase.new(string).nc
84
+ def NameCase!(string, options = {})
85
+ NameCase.nc! string, options
64
86
  end
@@ -0,0 +1,39 @@
1
+ # -*- encoding: utf-8 -*-
2
+ # stub: namecase 2.0.0 ruby lib
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = "namecase"
6
+ s.version = "2.0.0"
7
+
8
+ s.require_paths = ["lib"]
9
+ s.authors = ["Aaron Patterson"]
10
+ s.date = "2015-03-01"
11
+ s.description = "NameCase is a Ruby implementation of `Lingua::EN::NameCase`, a library for\nconverting strings to be properly cased. This is good for converting\ndenormalized data to human friendly data."
12
+ s.email = ["aaronp@rubyforge.org"]
13
+ s.extra_rdoc_files = ["History.txt", "LICENSE.txt", "Manifest.txt", "README.txt"]
14
+ s.files = [".gemtest", "Gemfile", "History.txt", "LICENSE.txt", "Manifest.txt", "README.txt", "Rakefile", "lib/namecase.rb", "test/test_namecase.rb"]
15
+ s.homepage = "http://namecase.rubyforge.org/"
16
+ s.licenses = ["GPL"]
17
+ s.rdoc_options = ["--main", "README.md"]
18
+ s.rubygems_version = "2.4.5"
19
+ s.summary = "NameCase is a Ruby implementation of `Lingua::EN::NameCase`, a library for converting strings to be properly cased"
20
+ s.test_files = ["test/test_namecase.rb"]
21
+
22
+ if s.respond_to? :specification_version then
23
+ s.specification_version = 4
24
+
25
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
26
+ s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
27
+ s.add_development_dependency(%q<minitest>, ["~> 4.0"])
28
+ s.add_development_dependency(%q<hoe>, ["~> 3.13"])
29
+ else
30
+ s.add_dependency(%q<rdoc>, ["~> 4.0"])
31
+ s.add_dependency(%q<minitest>, ["~> 4.0"])
32
+ s.add_dependency(%q<hoe>, ["~> 3.13"])
33
+ end
34
+ else
35
+ s.add_dependency(%q<rdoc>, ["~> 4.0"])
36
+ s.add_dependency(%q<minitest>, ["~> 4.0"])
37
+ s.add_dependency(%q<hoe>, ["~> 3.13"])
38
+ end
39
+ end
@@ -1,10 +1,9 @@
1
- $:.unshift File.join(File.dirname(__FILE__), "..", "lib")
2
- $:.unshift File.join(File.dirname(__FILE__), "..", "test")
3
-
1
+ # -*- coding: utf-8 -*-
2
+ #
4
3
  require 'namecase'
5
- require 'test/unit'
4
+ require 'minitest/autorun'
6
5
 
7
- class TestNameCase < Test::Unit::TestCase
6
+ class TestNameCase < Minitest::Test
8
7
  def setup
9
8
  @proper_names = [
10
9
  "Keith", "Leigh-Williams", "McCarthy",
@@ -31,25 +30,24 @@ class TestNameCase < Test::Unit::TestCase
31
30
 
32
31
  def test_namecase
33
32
  @proper_names.each do |name|
34
- nc_name = NameCase.new(name)
35
- assert_equal(name, nc_name.downcase.nc)
36
- assert_equal(name, NameCase.nc(name))
33
+ assert_equal(name, NameCase(name.downcase))
34
+ n = name.dup
35
+ n.extend(NameCase)
36
+ assert_equal(name, n.nc)
37
37
  assert_equal(name, NameCase(name))
38
38
  end
39
39
  end
40
40
 
41
41
  def test_namecase_modify
42
42
  @proper_names.each do |name|
43
- nc_name = NameCase.new(name)
44
- assert_equal(name, nc_name.downcase.nc!)
43
+ nc_name = NameCase!(name.downcase)
44
+ assert_equal(name, nc_name)
45
45
  end
46
46
  end
47
47
 
48
48
  def test_namecase_multibyte
49
- $KCODE = 'u'
50
-
51
49
  proper_cased = 'Iñtërnâtiônàlizætiøn'
52
- nc_name = NameCase.new(proper_cased)
53
- assert_equal(proper_cased, nc_name.downcase.nc)
50
+ nc_name = NameCase(proper_cased.downcase)
51
+ assert_equal(proper_cased, nc_name)
54
52
  end
55
53
  end
metadata CHANGED
@@ -1,73 +1,107 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: namecase
3
- version: !ruby/object:Gem::Version
4
- version: 1.1.0
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Aaron Patterson
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2008-10-05 00:00:00 -07:00
13
- default_executable:
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
11
+ date: 2015-03-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rdoc
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '4.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '4.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '4.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '4.0'
41
+ - !ruby/object:Gem::Dependency
16
42
  name: hoe
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.13'
17
48
  type: :development
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.7.0
24
- version:
25
- description: "NameCase is a Ruby implementation of Lingua::EN::NameCase, a library for converting strings to be properly cased. This is good for converting denormalized data to human friendly data. * Example Usage NameCase(\"RON BURGUNDY\") # => Ron Burgundy NameCase(\"MCDONALDS\") # => McDonalds * Acknowledgements This library is a port of the Perl library, and owes most of its functionality to the Perl version by Mark Summerfield. Any bugs in the Ruby port are my fault. * Author Original Version: Copyright (c) Mark Summerfield 1998-2002. <summer@perlpress.com> All Rights Reserved Ruby Version: Copyright (c) Aaron Patterson 2006 * License NameCase is distributed under the GPL license. Please see the LICENSE file."
26
- email:
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.13'
55
+ description: |-
56
+ NameCase is a Ruby implementation of `Lingua::EN::NameCase`, a library for
57
+ converting strings to be properly cased. This is good for converting
58
+ denormalized data to human friendly data.
59
+ email:
27
60
  - aaronp@rubyforge.org
28
61
  executables: []
29
-
30
62
  extensions: []
31
-
32
- extra_rdoc_files:
63
+ extra_rdoc_files:
33
64
  - History.txt
34
65
  - LICENSE.txt
35
66
  - Manifest.txt
36
- - README.txt
37
- files:
67
+ - README.md
68
+ files:
69
+ - ".gemtest"
70
+ - Gemfile
38
71
  - History.txt
39
72
  - LICENSE.txt
40
73
  - Manifest.txt
41
- - README.txt
74
+ - README.md
42
75
  - Rakefile
43
76
  - lib/namecase.rb
77
+ - namecase.gemspec
44
78
  - test/test_namecase.rb
45
- has_rdoc: true
46
- homepage: " http://namecase.rubyforge.org/"
79
+ homepage: http://namecase.rubyforge.org/
80
+ licenses:
81
+ - GPL
82
+ metadata: {}
47
83
  post_install_message:
48
- rdoc_options:
49
- - --main
50
- - README.txt
51
- require_paths:
84
+ rdoc_options:
85
+ - "--main"
86
+ - README.md
87
+ require_paths:
52
88
  - lib
53
- required_ruby_version: !ruby/object:Gem::Requirement
54
- requirements:
89
+ required_ruby_version: !ruby/object:Gem::Requirement
90
+ requirements:
55
91
  - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
58
- version:
59
- required_rubygems_version: !ruby/object:Gem::Requirement
60
- requirements:
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ required_rubygems_version: !ruby/object:Gem::Requirement
95
+ requirements:
61
96
  - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
64
- version:
97
+ - !ruby/object:Gem::Version
98
+ version: '0'
65
99
  requirements: []
66
-
67
- rubyforge_project: namecase
68
- rubygems_version: 1.2.0
100
+ rubyforge_project:
101
+ rubygems_version: 2.4.5
69
102
  signing_key:
70
- specification_version: 2
71
- summary: NameCase is a Ruby implementation of Lingua::EN::NameCase, a library for converting strings to be properly cased
72
- test_files:
103
+ specification_version: 4
104
+ summary: NameCase is a Ruby implementation of `Lingua::EN::NameCase`, a library for
105
+ converting strings to be properly cased
106
+ test_files:
73
107
  - test/test_namecase.rb
data/README.txt DELETED
@@ -1,34 +0,0 @@
1
- = NameCase
2
-
3
- http://namecase.rubyforge.org/
4
-
5
- == DESCRIPTION
6
-
7
- NameCase is a Ruby implementation of Lingua::EN::NameCase, a library for
8
- converting strings to be properly cased. This is good for converting
9
- denormalized data to human friendly data.
10
-
11
- * Example Usage
12
-
13
- NameCase("RON BURGUNDY") # => Ron Burgundy
14
- NameCase("MCDONALDS") # => McDonalds
15
-
16
- * Acknowledgements
17
-
18
- This library is a port of the Perl library, and owes most of its functionality
19
- to the Perl version by Mark Summerfield. Any bugs in the Ruby port are my
20
- fault.
21
-
22
- * Author
23
-
24
- Original Version:
25
- Copyright (c) Mark Summerfield 1998-2002.
26
- <summer@perlpress.com>
27
- All Rights Reserved
28
-
29
- Ruby Version:
30
- Copyright (c) Aaron Patterson 2006
31
-
32
- * License
33
-
34
- NameCase is distributed under the GPL license. Please see the LICENSE file.