name-tamer 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
![Gem Version](http://img.shields.io/gem/v/name-tamer.svg?style=flat) [![Coverage Status](https://img.shields.io/coveralls/Xenapto/name-tamer.svg?style=flat)](https://coveralls.io/r/Xenapto/name-tamer?branch=master)
|
4
|
+
[![Developer status](http://img.shields.io/badge/developer-awesome-brightgreen.svg?style=flat)](http://xenapto.com)
|
4
5
|
![build status](https://circleci.com/gh/Xenapto/name-tamer.png?circle-token=2293f2a1d8463a948c2a2ce4bb3bd99786958c59)
|
5
|
-
[![Coverage Status](https://img.shields.io/coveralls/Xenapto/name-tamer.svg)](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