name-tamer 0.0.2 → 0.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.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/README.md +2 -2
- data/lib/{name_tamer.rb → name-tamer.rb} +16 -16
- data/lib/{name_tamer → name-tamer}/version.rb +1 -1
- data/name-tamer.gemspec +1 -1
- data/spec/name_tamer_spec.rb +2 -2
- metadata +4 -6
- data/bin/name-tamer +0 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ec6a806fda32f1cde3963a72bb194491d7f34824
|
4
|
+
data.tar.gz: 9adbe554327717b744cd8bb550f4c4c259f7f0a9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ad2cf9d1f5b8f45234bb36d9e28f31a157ba2d3932ee8d3b503c8ca8f2671f30882bc9af107cfc75fa9c147646e6431f0b9712b398fb931ffa38c178abd3870a
|
7
|
+
data.tar.gz: 2db7830058a83550a0ce4adb252621d4ff2dd3c1f9c65572cbb35ee490099f6bfc9cd58ac682e778c5eedebe126d76038e2bd36483fa42c71031a43dbf62cafc
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# NameTamer
|
2
2
|
|
3
|
-
|
3
|
+
 [](https://coveralls.io/r/Xenapto/name-tamer?branch=master)
|
4
|
+
[](http://xenapto.com)
|
4
5
|

|
5
|
-
[](https://coveralls.io/r/Xenapto/name-tamer)
|
6
6
|
|
7
7
|
NameTamer: making sense of names
|
8
8
|
|
@@ -37,24 +37,24 @@ class NameTamer
|
|
37
37
|
@nice_name
|
38
38
|
end
|
39
39
|
|
40
|
-
def
|
41
|
-
if @
|
42
|
-
@
|
40
|
+
def simple_name
|
41
|
+
if @simple_name.nil?
|
42
|
+
@simple_name = nice_name.dup # Start with nice name
|
43
43
|
|
44
44
|
remove_initials # "John Q. Doe" -> "John Doe"
|
45
45
|
remove_middle_names # "Philip Seymour Hoffman" -> "Philip Hoffman"
|
46
46
|
remove_dots_from_abbreviations # "J.P.R. Williams" -> "JPR Williams"
|
47
47
|
standardize_words # "B&Q Intl" -> "B and Q International"
|
48
48
|
|
49
|
-
@
|
49
|
+
@simple_name = ensure_whitespace_is_ascii_space @simple_name
|
50
50
|
end
|
51
51
|
|
52
|
-
@
|
52
|
+
@simple_name
|
53
53
|
end
|
54
54
|
|
55
55
|
def slug
|
56
56
|
if @slug.nil?
|
57
|
-
@slug =
|
57
|
+
@slug = simple_name.dup # Start with search name
|
58
58
|
slugify # "John Doe" -> "john-doe"
|
59
59
|
end
|
60
60
|
|
@@ -79,7 +79,7 @@ class NameTamer
|
|
79
79
|
{
|
80
80
|
name: @name,
|
81
81
|
nice_name: @nice_name,
|
82
|
-
|
82
|
+
simple_name: @simple_name,
|
83
83
|
slug: @slug,
|
84
84
|
contact_type: @contact_type,
|
85
85
|
last_name: @last_name,
|
@@ -197,28 +197,28 @@ class NameTamer
|
|
197
197
|
# i.e. only remove initials if there's also a proper name there
|
198
198
|
def remove_initials
|
199
199
|
if @contact_type == :person
|
200
|
-
name = @
|
200
|
+
name = @simple_name.gsub(/\b([a-z](?:\.*\s+|\.))/i, '')
|
201
201
|
|
202
202
|
# If the name still has at least one space we're OK
|
203
|
-
@
|
203
|
+
@simple_name = name if name.include?(ASCII_SPACE)
|
204
204
|
end
|
205
205
|
end
|
206
206
|
|
207
207
|
def remove_middle_names
|
208
208
|
if @contact_type == :person
|
209
|
-
parts = @
|
210
|
-
@
|
209
|
+
parts = @simple_name.split
|
210
|
+
@simple_name = "#{parts[0]} #{parts[-1]}" if parts.count > 2
|
211
211
|
end
|
212
212
|
end
|
213
213
|
|
214
214
|
def remove_dots_from_abbreviations
|
215
|
-
@
|
215
|
+
@simple_name.gsub!(/\b([a-z])\./i) { |match| $1 }
|
216
216
|
end
|
217
217
|
|
218
218
|
def standardize_words
|
219
|
-
@
|
220
|
-
@
|
221
|
-
@
|
219
|
+
@simple_name.gsub!(/ *& */, ' and ') # replace ampersand characters with ' and '
|
220
|
+
@simple_name.gsub!(/ *\+ */, ' plus ') # replace plus signs with ' plus '
|
221
|
+
@simple_name.gsub!(/\bintl\b/i, 'International') # replace 'intl' with 'International'
|
222
222
|
end
|
223
223
|
|
224
224
|
#--------------------------------------------------------
|
@@ -242,7 +242,7 @@ class NameTamer
|
|
242
242
|
@contact_type = args[:contact_type].to_sym unless args[:contact_type].nil?
|
243
243
|
|
244
244
|
@nice_name = nil
|
245
|
-
@
|
245
|
+
@simple_name = nil
|
246
246
|
@slug = nil
|
247
247
|
|
248
248
|
@last_name = nil
|
data/name-tamer.gemspec
CHANGED
data/spec/name_tamer_spec.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'spec_helper'
|
3
|
-
require '
|
3
|
+
require 'name-tamer'
|
4
4
|
|
5
5
|
describe NameTamer do
|
6
6
|
let(:names) do
|
@@ -142,7 +142,7 @@ describe NameTamer do
|
|
142
142
|
it "makes a searchable name from #{name}" do
|
143
143
|
names.each do |name_data|
|
144
144
|
name = name_data[:n]
|
145
|
-
NameTamer[name, contact_type:name_data[:t]].
|
145
|
+
NameTamer[name, contact_type:name_data[:t]].simple_name.should == name_data[:sn]
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: name-tamer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xenapto
|
@@ -103,8 +103,7 @@ dependencies:
|
|
103
103
|
description: Useful methods for taming names
|
104
104
|
email:
|
105
105
|
- developers@xenapto.com
|
106
|
-
executables:
|
107
|
-
- name-tamer
|
106
|
+
executables: []
|
108
107
|
extensions: []
|
109
108
|
extra_rdoc_files: []
|
110
109
|
files:
|
@@ -116,9 +115,8 @@ files:
|
|
116
115
|
- LICENSE
|
117
116
|
- README.md
|
118
117
|
- Rakefile
|
119
|
-
-
|
120
|
-
- lib/
|
121
|
-
- lib/name_tamer/version.rb
|
118
|
+
- lib/name-tamer.rb
|
119
|
+
- lib/name-tamer/version.rb
|
122
120
|
- name-tamer.gemspec
|
123
121
|
- spec/name_tamer_spec.rb
|
124
122
|
- spec/spec_helper.rb
|
data/bin/name-tamer
DELETED