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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9842378513eb4b4d92498bcc0a91395fdfc01a7d
4
- data.tar.gz: 70879753a52989acdc9bf82233c4031c8b8c0e69
3
+ metadata.gz: 1a9ecae57929fd6fc1656e7895a00e2de12872bd
4
+ data.tar.gz: 7abe667c28de3ba099ce479c16cfc8eb75a05a5d
5
5
  SHA512:
6
- metadata.gz: cab9ca693f6598f2e6a84961bb73458737724da8e960ae7d35f6d53304a8126115004f7f7b02c3d375ef7bd4dda9a6ee14c074045b02e800579f590b5596792b
7
- data.tar.gz: 5721c6327dc15be767661b7c77d7634f22d53df23e7beef244f83e140256c310a97f937d97288b33d171f65ceb9f9c1c3feca2c65dbf1813920d1b97a1457f43
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
- self.first_name = name_arr.shift
35
- self.first_name = first_name + " " + name_arr.shift if is_second_first_name?(name_arr[0])
36
- self.first_name = first_name + " " + name_arr.shift + " " + name_arr.shift if anded_first_names?(name_arr[0])
37
-
38
- self.middle_name = name_arr.shift if contains_middle_name(name_arr)
39
- self.last_name_check(name_arr)
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]) & anded_first_names?(name_arr[1]) & contains_salutation(name_arr[2])
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
- second_first_names.collect { |x| x.upcase }.include?(_name.upcase)
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 anded_first_names?(_name)
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)
@@ -1,3 +1,3 @@
1
1
  module NameSplitter
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.4"
3
3
  end
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.3
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-05-27 00:00:00.000000000 Z
11
+ date: 2016-06-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler