nomener 0.1.3

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.
data/nomener.gemspec ADDED
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'nomener/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "nomener"
8
+ spec.version = Nomener::VERSION
9
+ spec.authors = ["Dante Piombino"]
10
+ spec.email = ["not@amusing.ninja"]
11
+ spec.summary = %q{A(nother)? human name parser in ruby.}
12
+ spec.description = %q{A human name parser in ruby.}
13
+ spec.homepage = "https://github.com/dan-ding/nomener"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.required_ruby_version = '>= 2.1'
22
+
23
+ spec.add_development_dependency "bundler", "~> 1.5"
24
+ spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "rspec", "~> 3.2"
26
+ spec.add_development_dependency "simplecov", "~> 0.9"
27
+ end
@@ -0,0 +1,23 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Complex name parsing" do
4
+ context "with the names" do
5
+ [
6
+ { name: "Cecil de De la Smith", result: { first: "Cecil", last: "de De la Smith"} },
7
+ { name: "Cecil Van Der Horn", result: { first: "Cecil", last: "Van Der Horn"} },
8
+ { name: "Cecil De La Hoya", result: { first: "Cecil", last: "De La Hoya"} },
9
+ { name: "Cecil McIntosh", result: { first: "Cecil", last: "McIntosh"} },
10
+ { name: "Gavan O'Herlihy", result: { first: "Gavan", last: "O'Herlihy"} },
11
+ { name: "Gavan Ó Herlihy", result: { first: "Gavan", last: "Ó Herlihy"} },
12
+ { name: "Gerard Van 't Hooft", result: { first: "Gerard", last: "Van 't Hooft"} },
13
+ { name: "Gerard 't Hooft", result: { first: "Gerard", last: "'t Hooft"} }
14
+ ].each do |name|
15
+ it "parses from #{name[:name]}" do
16
+ parsed = Nomener.parse(name[:name])
17
+ expect(parsed.first).to eq name[:result][:first]
18
+ expect(parsed.last).to eq name[:result][:last]
19
+ end
20
+ end
21
+
22
+ end
23
+ end
@@ -0,0 +1,24 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Name Parsing" do
4
+ context "with the name from first to last" do
5
+ [
6
+ "Bertrand Russell",
7
+ "Bertrand Arthur Russell",
8
+ "Bertrand Arthur William Russell",
9
+ "Bertrand A. William Russell",
10
+ "B. A. William Russell",
11
+ "Bertrand A W Russell"
12
+ ].each do |name|
13
+ it "parses #{name}" do
14
+ parsed = Nomener.parse(name)
15
+ expect(parsed.first[0]).to eq "B"
16
+ expect(parsed.last[0]).to eq "R"
17
+ expect(parsed.middle[0]).to eq "A" unless (parsed.middle.nil? || parsed.middle.empty?)
18
+ end
19
+ end
20
+ end
21
+
22
+ end
23
+
24
+
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Compounders" do
4
+ it "has the constant regex COMPOUNDS" do
5
+ expect(Nomener::Compounders::COMPOUNDS).to be_a_kind_of(Regexp)
6
+ end
7
+ end
@@ -0,0 +1,18 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Helper" do
4
+ context "with reformat" do
5
+ it "returns the same string given" do
6
+ expect(Nomener::Helper.reformat("Joe \"John\" O'Smith")).to eq "Joe \"John\" O'Smith"
7
+ end
8
+ it "returns the string with curved double quotes replaced" do
9
+ expect(Nomener::Helper.reformat("Joe “John” O'Smith")).to eq "Joe \"John\" O'Smith"
10
+ end
11
+ it "returns the string with curved single quotes replaced" do
12
+ expect(Nomener::Helper.reformat("Joe ‘John’ O'Smith")).to eq "Joe 'John' O'Smith"
13
+ end
14
+ it "returns the string with double angle quotes replaced" do
15
+ expect(Nomener::Helper.reformat("Joe «John» O'Smith")).to eq "Joe \"John\" O'Smith"
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,112 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Name" do
4
+
5
+ context "with initialization" do
6
+ it "a name as a string is handled" do
7
+ name = Nomener::Name.new("Joe Smith")
8
+ expect(name).to be_a Nomener::Name
9
+ expect(name.original).to eq "Joe Smith"
10
+ expect(name.values.delete_if {|i| i.nil? || i.empty? }).to eq []
11
+ end
12
+
13
+ it "an empty Nomener::Name when given a non-string" do
14
+ name = Nomener::Name.new(Random.new)
15
+ expect(name).to be_a Nomener::Name
16
+ expect(name.original).to eq ""
17
+ expect(name.values.compact).to eq []
18
+ end
19
+
20
+ it "sets @original same string it's initialized with" do
21
+ name = Nomener::Name.new("Joe Smith")
22
+ expect(name).to be_a Nomener::Name
23
+ expect(name.original).to eq "Joe Smith"
24
+ end
25
+
26
+ it "can not set the original after initialized with an empty string" do
27
+ name = Nomener::Name.new("")
28
+ expect {
29
+ name.original = "Joe Smith"
30
+ }.to raise_error NoMethodError
31
+ expect(name).to be_a Nomener::Name
32
+ end
33
+ end
34
+
35
+ context "with parse" do
36
+ it "it parses 'Joe Smith'" do
37
+ name = Nomener::Name.new("Joe Smith")
38
+ name.parse
39
+ expect(name.first).to eq "Joe"
40
+ expect(name.last).to eq "Smith"
41
+ end
42
+ end
43
+
44
+ context "with properlike" do
45
+ it "returns the name in a nice case" do
46
+ name = Nomener::Name.new("joE SmItH")
47
+ name.parse
48
+ expect(name.properlike).to eq "Joe Smith"
49
+ end
50
+ end
51
+
52
+ context "with to_s" do
53
+ it "returns the name in a original case" do
54
+ name = Nomener::Name.new("joE SmItH")
55
+ name.parse
56
+ expect(name.to_s).to eq "joE SmItH"
57
+ end
58
+
59
+ it "can be used in a string" do
60
+ name = Nomener::Name.new("Joe Smith")
61
+ name.parse
62
+ expect("Hello #{name}!").to eq "Hello Joe Smith!"
63
+ end
64
+ end
65
+
66
+ context "with name" do
67
+ it "follows the format and returns 'Bob Bob Bob' from 'Bob Smith'" do
68
+ name = Nomener::Name.new("Bob Smith")
69
+ name.parse
70
+ expect(name.name("%f %f %f")).to eq "Bob Bob Bob"
71
+ end
72
+ end
73
+
74
+ context "with full" do
75
+ it "returns the entire parsed name as a string" do
76
+ name = Nomener::Name.new("Mr. Joe Bob Smith")
77
+ name.parse
78
+ expect(name.full).to eq "Joe Bob Smith"
79
+ end
80
+ end
81
+
82
+ context "with inspect" do
83
+ it "details the object with only the parsed strings" do
84
+ name = Nomener::Name.new("Mr. Joe Smith")
85
+ name.parse
86
+ expect(name.inspect).to eq '#<Nomener::Name title="Mr" first="Joe" last="Smith">'
87
+ end
88
+ end
89
+
90
+ context "with capit" do
91
+ name = Nomener::Name.new
92
+ [
93
+ {from: "smith", to: "Smith"},
94
+ {from: "mckracken", to: "McKracken"},
95
+ {from: "macgrady", to: "MacGrady"},
96
+ {from: "macmurdo", to: "MacMurdo"},
97
+ {from: "machin", to: "Machin"},
98
+ {from: "o'reilly", to: "O'Reilly"},
99
+ {from: "d'angelo", to: "D'Angelo"},
100
+ {from: "allison-tiani", to: "Allison-Tiani"},
101
+ {from: "o miller", to: "O Miller"},
102
+ {from: "van 't hooft", to: "Van 't Hooft"},
103
+ {from: "van 't hooft-page", to: "Van 't Hooft-Page"}
104
+ ].each do |cap|
105
+ it "make nice '#{cap[:to]}' from '#{cap[:from]}'" do
106
+ expect(name.capit(cap[:from])).to eq cap[:to]
107
+ end
108
+ end
109
+ end
110
+
111
+
112
+ end
@@ -0,0 +1,110 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Parser" do
4
+
5
+ context "with parse" do
6
+ it "nil is returned when given a non-string" do
7
+ name = Nomener::Parser.parse(Random.new)
8
+ expect(name).to be_nil
9
+ end
10
+
11
+ it "nil is returned when given no arguments" do
12
+ expect {
13
+ Nomener::Parser.parse()
14
+ }.to raise_error ArgumentError
15
+ end
16
+
17
+ it "can not set the original after initialized with an empty string" do
18
+ name = Nomener::Name.new("")
19
+ expect {
20
+ name.original = "Joe Smith"
21
+ }.to raise_error NoMethodError
22
+ expect(name).to be_a Nomener::Name
23
+ end
24
+
25
+ [
26
+ {from: "Joe Smith", to: { first: "Joe", last: "Smith"} },
27
+ {from: "Joe Smith Jr.", to: { first: "Joe", last: "Smith", suffix: "Jr."} },
28
+ {from: "Joe Van 't Hooft", to: { first: "Joe", last: "Van 't Hooft"} },
29
+ {from: "Mr. Joe Smith", to: { title: "Mr", first: "Joe", last: "Smith"} },
30
+ {from: "Mr. Joe Smith Jr.", to: { title: "Mr", first: "Joe", last: "Smith", suffix:"Jr."} },
31
+ {from: "Mr. Joe Smith III", to: { title: "Mr", first: "Joe", last: "Smith", suffix:"III"} },
32
+ {from: "Mr. Joe \"Spud\" Smith III", to: { title: "Mr", first: "Joe", last: "Smith", suffix: "III", nick: "Spud"} },
33
+ ].each do |name|
34
+ it "returns a hash of the parsed name #{name[:from]}" do
35
+ parsed = Nomener::Parser.parse!(name[:from])
36
+ name[:to].keys.each do |key|
37
+ expect(parsed[key]).to eq name[:to][key]
38
+ end
39
+ end
40
+ end
41
+
42
+ end
43
+
44
+ context "with parse_title" do
45
+ [
46
+ {from: "Mr. Joe Smith", to: "Mr"},
47
+ {from: "Joe Smith", to: ""},
48
+ ].each do |name|
49
+ it "returns the title from #{name[:from]}" do
50
+ parsed = Nomener::Parser.parse_title(name[:from])
51
+ expect(parsed).to eq name[:to]
52
+ end
53
+ end
54
+ end
55
+
56
+ context "with parse_suffix" do
57
+ [
58
+ {from: "Mr. Joe Smith I", to: "I"},
59
+ {from: "Joe Smith II", to: "II"},
60
+ {from: "Joe Smith DMD", to: "DMD"},
61
+ {from: "Joe Smith Jr. DMD", to: "Jr. DMD"},
62
+ ].each do |name|
63
+ it "returns the suffix from #{name[:from]}" do
64
+ parsed = Nomener::Parser.parse_suffix(name[:from])
65
+ expect(parsed).to eq name[:to]
66
+ end
67
+ end
68
+ end
69
+
70
+ context "with parse_nick" do
71
+ [
72
+ {from: "Joe Smith", to: ""},
73
+ {from: "Joe (Spud) Smith II", to: "Spud"},
74
+ {from: "Joe \"Spud\" Smith DMD", to: "Spud"},
75
+ ].each do |name|
76
+ it "returns the suffix from #{name[:from]}" do
77
+ parsed = Nomener::Parser.parse_nick(name[:from])
78
+ expect(parsed).to eq name[:to]
79
+ end
80
+ end
81
+ end
82
+
83
+ context "with parse_last" do
84
+ [
85
+ {from: "Joe Smith", to: "Smith", opts: :fl},
86
+ {from: "Smith Joe", to: "Smith", opts: :lf},
87
+ {from: "Smith, Joe", to: "Smith", opts: :lcf},
88
+ {from: "Smith, Joe Jr.", to: "Smith", opts: :lcf},
89
+ ].each do |name|
90
+ it "returns the suffix from #{name[:from]}" do
91
+ parsed = Nomener::Parser.parse_last(name[:from], name[:opts])
92
+ expect(parsed).to eq name[:to]
93
+ end
94
+ end
95
+ end
96
+
97
+ context "with parse_first" do
98
+ [
99
+ { from: "Mary", to: ["Mary", ""], opts: 0 },
100
+ { from: "Mary Sue", to: ["Mary", "Sue"], opts: 0 },
101
+ { from: "Mary Sue", to: ["Mary Sue", ""], opts: 1 },
102
+ ].each do |name|
103
+ it "returns the first name #{name[:to][0]} from #{name[:from]}" do
104
+ parsed = Nomener::Parser.parse_first(name[:from], name[:opts])
105
+ expect(parsed).to eq name[:to]
106
+ end
107
+ end
108
+ end
109
+
110
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener" do
4
+ it "has the class method parse" do
5
+ expect(Nomener.singleton_methods).to match_array [:parse]
6
+ end
7
+
8
+ context "with the method parse" do
9
+ it "throw ArgumentError when passed no arguments" do
10
+ expect { Nomener.parse() }.to raise_error ArgumentError
11
+ end
12
+
13
+ it "returns an empty Nomener::Name when given a non-string" do
14
+ parser = Nomener.parse(Random.new)
15
+ expect(parser.values.compact).to eq []
16
+ expect(parser).to be_a Nomener::Name
17
+ end
18
+
19
+ it "returns a Nomener::Name when given a string" do
20
+ parser = Nomener.parse("Joe Smith")
21
+ expect(parser.values.delete_if {|i| i.empty? }).to eq ["Joe", "Smith"]
22
+ expect(parser).to be_a Nomener::Name
23
+ end
24
+
25
+ it "parses 'Joe Smith'" do
26
+ parser = Nomener.parse("Joe Smith")
27
+ expect(parser.first).to eq "Joe"
28
+ expect(parser.last).to eq "Smith"
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Suffixes" do
4
+ it "has the constant regex SUFFIXES" do
5
+ expect(Nomener::Suffixes::SUFFIXES).to be_a_kind_of(Regexp)
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Nomener::Titles" do
4
+ it "has the constant regex TITLES" do
5
+ expect(Nomener::Titles::TITLES).to be_a_kind_of(Regexp)
6
+ end
7
+ end
@@ -0,0 +1,224 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe "Title" do
4
+ context "in the names" do
5
+ [
6
+ { name: "خانم Augusta Ada King", result: "خانم" },
7
+ { name: "רעב Bertrand Russell", result: "רעב" },
8
+ { name: "'ר Bertrand Russell", result: "'ר" },
9
+ { name: "አቶ Bertrand Russell", result: "አቶ" },
10
+ { name: "Air Commander Bertrand Russell", result: "Air Commander" },
11
+ { name: "Air Commodore Bertrand Russell", result: "Air Commodore" },
12
+ { name: "Air Marshall Bertrand Russell", result: "Air Marshall" },
13
+ { name: "Ald. Bertrand Russell", result: "Ald" },
14
+ { name: "Alderman Bertrand Russell", result: "Alderman" },
15
+ { name: "Archduke Bertrand Russell", result: "Archduke" },
16
+ { name: "Duke Bertrand Russell", result: "Duke" },
17
+ { name: "Archduchess Augusta Ada King", result: "Archduchess" },
18
+ { name: "Duchess Augusta Ada King", result: "Duchess" },
19
+ { name: "Ato Bertrand Russell", result: "Ato" },
20
+ { name: "Baron Bertrand Russell", result: "Baron" },
21
+ { name: "Baroness Augusta Ada King", result: "Baroness" },
22
+ { name: "Bishop Bertrand Russell", result: "Bishop" },
23
+ { name: "Brig Bertrand Russell", result: "Brig" },
24
+ { name: "Brig. Bertrand Russell", result: "Brig" },
25
+ { name: "Brigadier Bertrand Russell", result: "Brigadier" },
26
+ { name: "Brother Bertrand Russell", result: "Brother" },
27
+ { name: "Capt Bertrand Russell", result: "Capt" },
28
+ { name: "Capt. Bertrand Russell", result: "Capt" },
29
+ { name: "Captain Bertrand Russell", result: "Captain" },
30
+ { name: "Cdr Bertrand Russell", result: "Cdr" },
31
+ { name: "Cdr. Bertrand Russell", result: "Cdr" },
32
+ { name: "Chaplain Bertrand Russell", result: "Chaplain" },
33
+ { name: "Colonel Bertrand Russell", result: "Colonel" },
34
+ { name: "Commander Bertrand Russell", result: "Commander" },
35
+ { name: "Commodore Bertrand Russell", result: "Commodore" },
36
+ { name: "Count Bertrand Russell", result: "Count" },
37
+ { name: "Countess Augusta Ada King", result: "Countess" },
38
+ { name: "Dame Augusta Ada King", result: "Dame" },
39
+ { name: "Det Bertrand Russell", result: "Det" },
40
+ { name: "Det. Bertrand Russell", result: "Det" },
41
+ { name: "Dhr Bertrand Russell", result: "Dhr" },
42
+ { name: "Dhr. Bertrand Russell", result: "Dhr" },
43
+ { name: "Doctor Bertrand Russell", result: "Doctor" },
44
+ { name: "Dr Bertrand Russell", result: "Dr" },
45
+ { name: "Dr. Bertrand Russell", result: "Dr" },
46
+ { name: "Dom Bertrand Russell", result: "Dom" },
47
+ { name: "Don Bertrand Russell", result: "Don" },
48
+ { name: "Dona Augusta Ada King", result: "Dona" },
49
+ { name: "Erzherzog Bertrand Russell", result: "Erzherzog" },
50
+ { name: "Erzherzogin Augusta Ada King", result: "Erzherzogin" },
51
+ { name: "Father Bertrand Russell", result: "Father" },
52
+ { name: "Field Marshall Bertrand Russell", result: "Field Marshall" },
53
+ { name: "Fl Lt Bertrand Russell", result: "Fl Lt" },
54
+ { name: "Fl. Lt. Bertrand Russell", result: "Fl Lt" },
55
+ { name: "Flt Lt Bertrand Russell", result: "Flt Lt" },
56
+ { name: "Flt. Lt. Bertrand Russell", result: "Flt Lt" },
57
+ { name: "Fl Off Bertrand Russell", result: "Fl Off" },
58
+ { name: "Fl. Off. Bertrand Russell", result: "Fl Off" },
59
+ { name: "Flt Off Bertrand Russell", result: "Flt Off" },
60
+ { name: "Flt. Off. Bertrand Russell", result: "Flt Off" },
61
+ { name: "Flight Officer Bertrand Russell", result: "Flight Officer" },
62
+ { name: "Flight Lieutenant Bertrand Russell", result: "Flight Lieutenant" },
63
+ { name: "Frau Augusta Ada King", result: "Frau" },
64
+ { name: "Fr Augusta Ada King", result: "Fr" },
65
+ { name: "Fr. Augusta Ada King", result: "Fr" },
66
+ { name: "Gen. Bertrand Russell", result: "Gen" },
67
+ { name: "General Bertrand Russell", result: "General" },
68
+ { name: "Herra Bertrand Russell", result: "Herra" },
69
+ { name: "Härra Bertrand Russell", result: "Härra" },
70
+ { name: "Herr Bertrand Russell", result: "Herr" },
71
+ { name: "Hra Bertrand Russell", result: "Hra" },
72
+ { name: "Hra. Bertrand Russell", result: "Hra" },
73
+ { name: "Hr Bertrand Russell", result: "Hr" },
74
+ { name: "Hr. Bertrand Russell", result: "Hr" },
75
+ { name: "Rt Hon Bertrand Russell", result: "Rt Hon" },
76
+ { name: "Rt. Hon. Bertrand Russell", result: "Rt Hon" },
77
+ { name: "Hon Bertrand Russell", result: "Hon" },
78
+ { name: "Hon. Bertrand Russell", result: "Hon" },
79
+ { name: "Right Honourable Bertrand Russell", result: "Right Honourable" },
80
+ { name: "Honourable Bertrand Russell", result: "Honourable" },
81
+ { name: "Insp Bertrand Russell", result: "Insp" },
82
+ { name: "Insp. Bertrand Russell", result: "Insp" },
83
+ { name: "Inspector Bertrand Russell", result: "Inspector" },
84
+ { name: "Judge Bertrand Russell", result: "Judge" },
85
+ { name: "Justice Bertrand Russell", result: "Justice" },
86
+ { name: "Khaanom Augusta Ada King", result: "Khaanom" },
87
+ { name: "Lady Augusta Ada King", result: "Lady" },
88
+ { name: "Lieutenant Bertrand Russell", result: "Lieutenant" },
89
+ { name: "Lieutenant Commander Bertrand Russell", result: "Lieutenant Commander" },
90
+ { name: "Lieutenant Colonel Bertrand Russell", result: "Lieutenant Colonel" },
91
+ { name: "Lieutenant General Bertrand Russell", result: "Lieutenant General" },
92
+ { name: "Lt Col Bertrand Russell", result: "Lt Col" },
93
+ { name: "Lt. Col. Bertrand Russell", result: "Lt Col" },
94
+ { name: "Lt Cdr Bertrand Russell", result: "Lt Cdr" },
95
+ { name: "Lt. Cdr. Bertrand Russell", result: "Lt Cdr" },
96
+ { name: "Lt Col Bertrand Russell", result: "Lt Col" },
97
+ { name: "Lt. Col. Bertrand Russell", result: "Lt Col" },
98
+ { name: "Lt Gen Bertrand Russell", result: "Lt Gen" },
99
+ { name: "Lt. Gen. Bertrand Russell", result: "Lt Gen" },
100
+ { name: "Lt Bertrand Russell", result: "Lt" },
101
+ { name: "Lt. Bertrand Russell", result: "Lt" },
102
+ { name: "Leut Bertrand Russell", result: "Leut" },
103
+ { name: "Leut. Bertrand Russell", result: "Leut" },
104
+ { name: "Lieut Bertrand Russell", result: "Lieut" },
105
+ { name: "Lieut. Bertrand Russell", result: "Lieut" },
106
+ { name: "Lord Bertrand Russell", result: "Lord" },
107
+ { name: "Madam Augusta Ada King", result: "Madam" },
108
+ { name: "Madame Augusta Ada King", result: "Madame" },
109
+ { name: "Maid Augusta Ada King", result: "Maid" },
110
+ { name: "Major Bertrand Russell", result: "Major" },
111
+ { name: "Major General Bertrand Russell", result: "Major General" },
112
+ { name: "Maj Bertrand Russell", result: "Maj" },
113
+ { name: "Maj. Bertrand Russell", result: "Maj" },
114
+ { name: "Maj Gen Bertrand Russell", result: "Maj Gen" },
115
+ { name: "Maj. Gen. Bertrand Russell", result: "Maj Gen" },
116
+ { name: "Mast Bertrand Russell", result: "Mast" },
117
+ { name: "Mast. Bertrand Russell", result: "Mast" },
118
+ { name: "Master Bertrand Russell", result: "Master" },
119
+ { name: "Master Sergeant Bertrand Russell", result: "Master Sergeant" },
120
+ { name: "Matron Augusta Ada King", result: "Matron" },
121
+ { name: "Menina Augusta Ada King", result: "Menina" },
122
+ { name: "Messrs Bertrand Russell", result: "Messrs" },
123
+ { name: "Meneer Bertrand Russell", result: "Meneer" },
124
+ { name: "Miss Augusta Ada King", result: "Miss" },
125
+ { name: "Miss. Augusta Ada King", result: "Miss" },
126
+ { name: "Mister Bertrand Russell", result: "Mister" },
127
+ { name: "Mne Bertrand Russell", result: "Mne" },
128
+ { name: "Mne. Bertrand Russell", result: "Mne" },
129
+ { name: "Mnr Bertrand Russell", result: "Mnr" },
130
+ { name: "Mnr. Bertrand Russell", result: "Mnr" },
131
+ { name: "Mons Bertrand Russell", result: "Mons" },
132
+ { name: "Mons. Bertrand Russell", result: "Mons" },
133
+ { name: "Monsignor Bertrand Russell", result: "Monsignor" },
134
+ { name: "Most Reverend Bertrand Russell", result: "Most Reverend" },
135
+ { name: "Most Reverand Bertrand Russell", result: "Most Reverand" },
136
+ { name: "Mother Augusta Ada King", result: "Mother" },
137
+ { name: "Mother Superior Augusta Ada King", result: "Mother Superior" },
138
+ { name: "Mr Bertrand Russell", result: "Mr" },
139
+ { name: "Mr. Bertrand Russell", result: "Mr" },
140
+ { name: "Mrs Augusta Ada King", result: "Mrs" },
141
+ { name: "Mrs. Augusta Ada King", result: "Mrs" },
142
+ { name: "Msgr. Bertrand Russell", result: "Msgr" },
143
+ { name: "Ms Augusta Ada King", result: "Ms" },
144
+ { name: "Ms. Augusta Ada King", result: "Ms" },
145
+ { name: "MSgt Bertrand Russell", result: "MSgt" },
146
+ { name: "MSgt. Bertrand Russell", result: "MSgt" },
147
+ { name: "Mt Rev Bertrand Russell", result: "Mt Rev" },
148
+ { name: "Mt. Rev. Bertrand Russell", result: "Mt Rev" },
149
+ { name: "Mt Revd Bertrand Russell", result: "Mt Revd" },
150
+ { name: "Mt. Revd. Bertrand Russell", result: "Mt Revd" },
151
+ { name: "Mx Bertrand Russell", result: "Mx" },
152
+ { name: "Mx. Bertrand Russell", result: "Mx" },
153
+ { name: "ông Bertrand Russell", result: "ông" },
154
+ { name: "Pastor Bertrand Russell", result: "Pastor" },
155
+ { name: "Private Bertrand Russell", result: "Private" },
156
+ { name: "Prof Bertrand Russell", result: "Prof" },
157
+ { name: "Prof. Bertrand Russell", result: "Prof" },
158
+ { name: "Professor Bertrand Russell", result: "Professor" },
159
+ { name: "Pte Bertrand Russell", result: "Pte" },
160
+ { name: "Pte. Bertrand Russell", result: "Pte" },
161
+ { name: "Pvt Bertrand Russell", result: "Pvt" },
162
+ { name: "Pvt. Bertrand Russell", result: "Pvt" },
163
+ { name: "PFC Bertrand Russell", result: "PFC" },
164
+ { name: "Rabbi Bertrand Russell", result: "Rabbi" },
165
+ { name: "Reb Bertrand Russell", result: "Reb" },
166
+ { name: "Reb. Bertrand Russell", result: "Reb" },
167
+ { name: "Rev Bertrand Russell", result: "Rev" },
168
+ { name: "Revd Bertrand Russell", result: "Revd" },
169
+ { name: "Reverand Bertrand Russell", result: "Reverand" },
170
+ { name: "Reverend Bertrand Russell", result: "Reverend" },
171
+ { name: "Senora Augusta Ada King", result: "Senora" },
172
+ { name: "Señora Augusta Ada King", result: "Señora" },
173
+ { name: "Senhora Augusta Ada King", result: "Senhora" },
174
+ { name: "Senor Bertrand Russell", result: "Senor" },
175
+ { name: "Señor Bertrand Russell", result: "Señor" },
176
+ { name: "Senhor Bertrand Russell", result: "Senhor" },
177
+ { name: "Senyor Bertrand Russell", result: "Senyor" },
178
+ { name: "Sénher Bertrand Russell", result: "Sénher" },
179
+ { name: "Senor Dom Bertrand Russell", result: "Senor Dom" },
180
+ { name: "Senorita Augusta Ada King", result: "Senorita" },
181
+ { name: "Señorita Augusta Ada King", result: "Señorita" },
182
+ { name: "Senhorita Augusta Ada King", result: "Senhorita" },
183
+ { name: "Seigneur Bertrand Russell", result: "Seigneur" },
184
+ { name: "Signore Bertrand Russell", result: "Signore" },
185
+ { name: "Signora Augusta Ada King", result: "Signora" },
186
+ { name: "Sig Bertrand Russell", result: "Sig" },
187
+ { name: "Sig. Bertrand Russell", result: "Sig" },
188
+ { name: "Siga Bertrand Russell", result: "Siga" },
189
+ { name: "Siga. Bertrand Russell", result: "Siga" },
190
+ { name: "Sigra Bertrand Russell", result: "Sigra" },
191
+ { name: "Sigra. Bertrand Russell", result: "Sigra" },
192
+ { name: "Sioro Bertrand Russell", result: "Sioro" },
193
+ { name: "Sro Bertrand Russell", result: "Sro" },
194
+ { name: "Sro. Bertrand Russell", result: "Sro" },
195
+ { name: "Sgt Bertrand Russell", result: "Sgt" },
196
+ { name: "Sgt. Bertrand Russell", result: "Sgt" },
197
+ { name: "Sergeant Bertrand Russell", result: "Sergeant" },
198
+ { name: "SSgt Bertrand Russell", result: "SSgt" },
199
+ { name: "SSgt. Bertrand Russell", result: "SSgt" },
200
+ { name: "Sir Bertrand Russell", result: "Sir" },
201
+ { name: "Sister Augusta Ada King", result: "Sister" },
202
+ { name: "Sr Bertrand Russell", result: "Sr" },
203
+ { name: "Sr. Bertrand Russell", result: "Sr" },
204
+ { name: "Sra Augusta Ada King", result: "Sra" },
205
+ { name: "Sra. Augusta Ada King", result: "Sra" },
206
+ { name: "Srta Augusta Ada King", result: "Srta" },
207
+ { name: "Srta. Augusta Ada King", result: "Srta" },
208
+ { name: "Staff Sergeant Bertrand Russell", result: "Staff Sergeant" },
209
+ { name: "Technical Sergeant Bertrand Russell", result: "Technical Sergeant" },
210
+ { name: "TSgt Bertrand Russell", result: "TSgt" },
211
+ { name: "TSgt. Bertrand Russell", result: "TSgt" },
212
+ { name: "V Revd Bertrand Russell", result: "V Revd" },
213
+ { name: "V. Revd. Bertrand Russell", result: "V Revd" },
214
+ { name: "Very Reverend Bertrand Russell", result: "Very Reverend" },
215
+ { name: "Very Reverand Bertrand Russell", result: "Very Reverand" },
216
+ ].each do |name|
217
+ it "parses #{name[:result]} from #{name[:name]}" do
218
+ parsed = Nomener.parse(name[:name])
219
+ expect(parsed.title).to eq name[:result]
220
+ end
221
+ end
222
+
223
+ end
224
+ end
@@ -0,0 +1,14 @@
1
+ require 'simplecov'
2
+ SimpleCov.start do
3
+ add_filter "/spec/"
4
+ end if ENV["COVERAGE"]
5
+
6
+ require 'nomener'
7
+ require 'bundler/setup'
8
+
9
+ RSpec.configure do |config|
10
+ config.mock_with :rspec
11
+ config.formatter = :progress
12
+ config.raise_errors_for_deprecations!
13
+ config.order = 'random'
14
+ end