icu_name 1.0.2 → 1.0.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/lib/icu_name/name.rb +8 -1
- data/lib/icu_name/version.rb +1 -1
- data/spec/name_spec.rb +24 -6
- metadata +3 -3
data/lib/icu_name/name.rb
CHANGED
@@ -136,7 +136,7 @@ module ICU
|
|
136
136
|
|
137
137
|
# Clean up characters in any name keeping only letters (including accented), hyphens, and single quotes.
|
138
138
|
def clean(name)
|
139
|
-
name.gsub!(
|
139
|
+
name.gsub!(/[`‘’′‛]/, "'")
|
140
140
|
name.gsub!(/./) do |m|
|
141
141
|
if m.ord < 256
|
142
142
|
# Keep Latin1 accented letters.
|
@@ -270,8 +270,15 @@ module ICU
|
|
270
270
|
alts.push k if v == true || v.match(target)
|
271
271
|
end
|
272
272
|
end
|
273
|
+
alts.concat(automatic_alts(names))
|
273
274
|
alts
|
274
275
|
end
|
276
|
+
|
277
|
+
# Add automatic alternatives - those not dependent on a compiled list.
|
278
|
+
# Currently only provides alternative for apostrophes, as backticks are often used instead by FIDE.
|
279
|
+
def automatic_alts(names)
|
280
|
+
names.find_all{|n| n.index("'")}.map{|n| n.gsub!("'", "`")}
|
281
|
+
end
|
275
282
|
|
276
283
|
# Compile an alternative names hash (for either first names or last names) before matching is first attempted.
|
277
284
|
def self.compile_alts(type, data=nil, force=false)
|
data/lib/icu_name/version.rb
CHANGED
data/spec/name_spec.rb
CHANGED
@@ -108,14 +108,28 @@ module ICU
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
context "last names involving
|
112
|
-
|
111
|
+
context "last names involving single quote-like characters" do
|
112
|
+
before(:each) do
|
113
|
+
@una = Name.new('Una', "O'Boyle")
|
114
|
+
end
|
115
|
+
|
116
|
+
it "should use apostrophe (0027) as the canonical choice" do
|
113
117
|
Name.new('una', "O'boyle").name.should == "Una O'Boyle"
|
118
|
+
Name.new('Una', "o’boyle").name.should == "Una O'Boyle"
|
114
119
|
Name.new('jonathan', 'd`arcy').name.should == "Jonathan D'Arcy"
|
115
|
-
Name.new('erwin e', "L
|
120
|
+
Name.new('erwin e', "L′AMI").name.should == "Erwin E. L'Ami"
|
116
121
|
Name.new('cormac', "o brien").name.should == "Cormac O'Brien"
|
117
122
|
Name.new('türko', "o özgür").name.should == "Türko O'Özgür"
|
118
|
-
Name.new('türko', "l
|
123
|
+
Name.new('türko', "l‘özgür").name.should == "Türko L'Özgür"
|
124
|
+
end
|
125
|
+
|
126
|
+
it "backticks (0060), opening (2018) and closing (2019) single quotes, primes (2032) and high reversed 9 quotes (201B) should be equivalent" do
|
127
|
+
@una.match("Una", "O`Boyle").should be_true
|
128
|
+
@una.match("Una", "O’Boyle").should be_true
|
129
|
+
@una.match("Una", "O‘Boyle").should be_true
|
130
|
+
@una.match("Una", "O′Boyle").should be_true
|
131
|
+
@una.match("Una", "O‛Boyle").should be_true
|
132
|
+
@una.match("Una", "O‚Boyle").should be_false
|
119
133
|
end
|
120
134
|
end
|
121
135
|
|
@@ -471,9 +485,13 @@ module ICU
|
|
471
485
|
Name.new('Sean', 'Bradley').alternatives(:first).should =~ []
|
472
486
|
end
|
473
487
|
|
488
|
+
it "should have automatic last name alternatives for apostrophes to cater for FIDE's habits" do
|
489
|
+
Name.new('Mairead', "O'Siochru").alternatives(:last).should =~ ["O`Siochru"]
|
490
|
+
Name.new('Erwin E.', "L`Ami").alternatives(:last).should =~ ["L`Ami"]
|
491
|
+
end
|
492
|
+
|
474
493
|
it "should not have any last name alternatives" do
|
475
494
|
Name.new('William', 'Ffrench').alternatives(:last).should =~ []
|
476
|
-
Name.new('Mairead', "O'Siochru").alternatives(:last).should =~ []
|
477
495
|
Name.new('Oissine', 'Murphy').alternatives(:last).should =~ []
|
478
496
|
Name.new('Debbie', 'Quinn').alternatives(:last).should =~ []
|
479
497
|
end
|
@@ -495,7 +513,7 @@ module ICU
|
|
495
513
|
|
496
514
|
it "should have some last name alternatives" do
|
497
515
|
Name.new('William', 'Ffrench').alternatives(:last).should =~ %w{French}
|
498
|
-
Name.new('Mairead', "O'Siochru").alternatives(:last).should =~ %w{King}
|
516
|
+
Name.new('Mairead', "O'Siochru").alternatives(:last).should =~ %w{King O`Siochru}
|
499
517
|
Name.new('Oissine', 'Murphy').alternatives(:last).should =~ %w{Murchadha}
|
500
518
|
Name.new('Debbie', 'Quinn').alternatives(:last).should =~ %w{Benjamin}
|
501
519
|
Name.new('Mark', 'Quinn').alternatives(:last).should =~ []
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 1.0.
|
8
|
+
- 3
|
9
|
+
version: 1.0.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Mark Orr
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2011-
|
17
|
+
date: 2011-05-28 00:00:00 +01:00
|
18
18
|
default_executable:
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|