name_splitter 0.1.3 → 0.1.4
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/lib/name_splitter.rb +29 -13
- data/lib/name_splitter/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a9ecae57929fd6fc1656e7895a00e2de12872bd
|
4
|
+
data.tar.gz: 7abe667c28de3ba099ce479c16cfc8eb75a05a5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 30fe5a0f08474cb3b2d21d184b72e02c209c1820afadaab58e8b486ca8388db63d75c5a742b24dec1375a2180b5c1009d3439b30b0796f16175ed1e1cd88d328
|
7
|
+
data.tar.gz: 83efda15ec71e1a0e0f428bf5839681222ca067e883f6d9b8fc695e519886f2733412ab2eb4c40d2b229440e503f0d7e1d1e55e2acc8009d9d4945de4d5ff748
|
data/lib/name_splitter.rb
CHANGED
@@ -26,17 +26,15 @@ module NameSplitter
|
|
26
26
|
name_arr = fullname.split(" ")
|
27
27
|
if name_arr.length == 1
|
28
28
|
self.first_name = name_arr.shift
|
29
|
-
elsif name_arr.length == 2 and contains_salutation(name_arr[0])
|
30
|
-
self.salutation = name_arr.shift
|
31
|
-
self.last_name = name_arr.shift
|
32
29
|
else
|
33
30
|
self.salutation = name_arr.shift(number_of_salutations(name_arr)).join(" ")
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
31
|
+
if name_arr.length == 1
|
32
|
+
self.last_name = name_arr.shift
|
33
|
+
else
|
34
|
+
self.first_name = name_arr.shift(number_of_first_names(name_arr)).join(" ")
|
35
|
+
self.middle_name = name_arr.shift if contains_middle_name(name_arr)
|
36
|
+
self.last_name_check(name_arr)
|
37
|
+
end
|
40
38
|
end
|
41
39
|
end
|
42
40
|
|
@@ -60,17 +58,35 @@ module NameSplitter
|
|
60
58
|
end
|
61
59
|
|
62
60
|
def number_of_salutations(name_arr)
|
63
|
-
return 3 if contains_salutation(name_arr[0]) &
|
61
|
+
return 3 if contains_salutation(name_arr[0]) & anded_names?(name_arr[1]) & contains_salutation(name_arr[2])
|
64
62
|
return 1 if contains_salutation(name_arr[0])
|
65
63
|
return 0
|
66
64
|
end
|
67
65
|
|
66
|
+
def number_of_first_names(name_arr)
|
67
|
+
return 2 if is_second_first_name?(name_arr[1])
|
68
|
+
number_of_anded_names_before_last_names_if_any(name_arr)
|
69
|
+
end
|
70
|
+
|
71
|
+
def number_of_anded_names_before_last_names_if_any(name_arr)
|
72
|
+
return 1 unless contains_an_and(name_arr)
|
73
|
+
first_name_length = name_arr.length - 1
|
74
|
+
first_name_length -= 1 if contains_suffix(name_arr)
|
75
|
+
first_name_length -= 1 if contains_last_name_prefix(name_arr)
|
76
|
+
first_name_length
|
77
|
+
end
|
78
|
+
|
68
79
|
def is_second_first_name?(_name)
|
69
|
-
|
80
|
+
return false unless _name
|
81
|
+
second_first_names.collect { |x| x.upcase }.include?(_name.upcase)
|
82
|
+
end
|
83
|
+
|
84
|
+
def anded_names?(_name)
|
85
|
+
contains_an_and(_name)
|
70
86
|
end
|
71
87
|
|
72
|
-
def
|
73
|
-
["and", "&"].include?(_name.to_s.strip)
|
88
|
+
def contains_an_and(*name_arr)
|
89
|
+
name_arr.flatten.select { |_name| ["and", "&"].include?(_name.to_s.strip) }.any?
|
74
90
|
end
|
75
91
|
|
76
92
|
def contains_salutation(_name)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: name_splitter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tom Hoen
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|