dwc_agent 3.0.0.7 → 3.0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70910df19904a83d0a36645c3bd3335e63648d64e4e9c3d029adf6dc744fca4b
4
- data.tar.gz: 151d8f4dc49024179cb189e24a9842ba8a634b3ec5f8c72b01b344ca1e798846
3
+ metadata.gz: 7088c447cef189841c901d87721653610ef2002b58431d17fbcf13eb9cdf4ea2
4
+ data.tar.gz: 254ae919ed52373e7782cb2c127d05dbf582d40841afba1c1f528580172ffc76
5
5
  SHA512:
6
- metadata.gz: 80699e4a231dc12410e5b59fc15c433fe73a5785c4d4884c48e1bee83bf9674b0c62812f706da921e197a09ab270a889fc5e4150b2dbc5122083f1ac6c8082e7
7
- data.tar.gz: 4e5e9ecd81d556c25eb9bb0620a00a6bb35f52d11036534ab48857dc333125fc7abf8ce408099fe5648e8bbac256c4e1c4674d8f55ce67cfa3fdf9286250f6e8
6
+ metadata.gz: 3d0c9c49eb804f11815a143409b2915a6fa579134e3a39c42ef4c36ba9b021d620289b1bccc49d83df51efa632300d4d0a5aaaee14c16aa585ecd500d1dce256
7
+ data.tar.gz: 6aefdd8f7c80ab18632792ae7e8914d8ba9a6a9c7b113b528e640af172bcdf78a9e85a1c72d569277cacb5d95787c3c8ffec026a4a36c715d836c81df1ec25ff
@@ -18,11 +18,14 @@ module DwcAgent
18
18
  # @return Namae::Name [Object] a new Namae object
19
19
  def clean(parsed_namae)
20
20
 
21
- if parsed_namae.given && GIVEN_BLACKLIST.any?{ |s| s.casecmp(parsed_namae.given) == 0 }
21
+ if parsed_namae.given &&
22
+ GIVEN_BLACKLIST.any?{ |s| s.casecmp(parsed_namae.given) == 0 }
22
23
  return Namae::Name.new
23
24
  end
24
25
 
25
- if parsed_namae.family && parsed_namae.family.length == 3 && parsed_namae.family.count('.') == 1
26
+ if parsed_namae.family &&
27
+ parsed_namae.family.length == 3 &&
28
+ parsed_namae.family.count('.') == 1
26
29
  return Namae::Name.new
27
30
  end
28
31
 
@@ -30,7 +33,9 @@ module DwcAgent
30
33
  return Namae::Name.new
31
34
  end
32
35
 
33
- if parsed_namae.given && parsed_namae.given.count('.') >= 3 && /\.\s*[a-zA-Z]{4,}\s+[a-zA-Z]{1,}\./.match(parsed_namae.given)
36
+ if parsed_namae.given &&
37
+ parsed_namae.given.count('.') >= 3 &&
38
+ /\.\s*[a-zA-Z]{4,}\s+[a-zA-Z]{1,}\./.match(parsed_namae.given)
34
39
  return Namae::Name.new
35
40
  end
36
41
 
@@ -38,6 +43,13 @@ module DwcAgent
38
43
  return Namae::Name.new
39
44
  end
40
45
 
46
+ if parsed_namae.family &&
47
+ parsed_namae.family.count(".") == 1 &&
48
+ parsed_namae.family[-1] == "." &&
49
+ parsed_namae.family.length > 3
50
+ parsed_namae.family = parsed_namae.family.delete_suffix(".")
51
+ end
52
+
41
53
  if parsed_namae.given &&
42
54
  parsed_namae.family &&
43
55
  parsed_namae.family.count(".") > 0 &&
@@ -59,6 +71,15 @@ module DwcAgent
59
71
  parsed_namae.given = family
60
72
  end
61
73
 
74
+ if !parsed_namae.given &&
75
+ parsed_namae.particle &&
76
+ parsed_namae.family &&
77
+ /^[A-Za-z]{3,}\s+(?:[A-Z]\.\s?){1,}$/.match(parsed_namae.family)
78
+ matched = /^(?<family>[A-Za-z]{3,})\s+(?<given>([A-Z]\.\s?){1,})$/.match(parsed_namae.family)
79
+ parsed_namae.family = matched[:family]
80
+ parsed_namae.given = matched[:given]
81
+ end
82
+
62
83
  if parsed_namae.given &&
63
84
  (parsed_namae.given == parsed_namae.given.upcase ||
64
85
  parsed_namae.given == parsed_namae.given.downcase) &&
@@ -75,13 +96,21 @@ module DwcAgent
75
96
  parsed_namae.given = NameCase(parsed_namae.given)
76
97
  end
77
98
 
78
- if parsed_namae.family && FAMILY_BLACKLIST.any?{ |s| s.casecmp(parsed_namae.family) == 0 }
99
+ if parsed_namae.family &&
100
+ FAMILY_BLACKLIST.any?{ |s| s.casecmp(parsed_namae.family) == 0 }
79
101
  return Namae::Name.new
80
102
  end
81
103
 
104
+ if parsed_namae.family.nil? &&
105
+ !parsed_namae.given.nil? &&
106
+ !parsed_namae.given.include?(".")
107
+ parsed_namae.family = parsed_namae.given
108
+ parsed_namae.given = nil
109
+ end
110
+
82
111
  parsed_namae.normalize_initials
83
112
 
84
- family = parsed_namae.family.gsub(/\.\z/, '').strip rescue nil
113
+ family = parsed_namae.family
85
114
  given = parsed_namae.given.strip rescue nil
86
115
  particle = parsed_namae.particle.strip rescue nil
87
116
  appellation = parsed_namae.appellation.strip rescue nil
@@ -92,12 +121,10 @@ module DwcAgent
92
121
  given = given.gsub(".", ". ").strip
93
122
  end
94
123
 
95
- if family.nil? && !given.nil? && !given.include?(".")
96
- family = given
97
- given = nil
98
- end
99
-
100
- if !family.nil? && given.nil? && !particle.nil?
124
+ if !family.nil? &&
125
+ given.nil? &&
126
+ !particle.nil? &&
127
+ !PARTICLES.include?(particle.downcase)
101
128
  given = particle.sub(/[a-z]\./, &:upcase).sub(/^(.)/) { $1.capitalize }
102
129
  particle = nil
103
130
  end
@@ -110,8 +137,8 @@ module DwcAgent
110
137
  family = NameCase(family)
111
138
  end
112
139
 
113
- if !family.nil? && family.match(/[A-Z]$/)
114
- return Namae::Name.new
140
+ if !family.nil? && family.match(/[A-Z]{1,3}$/)
141
+ family = NameCase(family.upcase)
115
142
  end
116
143
 
117
144
  if given.nil? && !family.nil? && family.match(/^[A-Z]{2}/)
@@ -200,6 +200,7 @@ module DwcAgent
200
200
  "^(\\S{4,},\\s+(?:\\S\\.\\s*){1,})\\s+(\\S{4,},\\s+(?:\\S\.\\s*){1,})$" => "\\1 | \\2",
201
201
  "(\\S{1}\\.)([[:alpha:]]{2,})" => "\\1 \\2",
202
202
  "([[:alpha:]]*),?\\s+(.*)\\s+(van|von)$" => "\\3 \\1, \\2",
203
+ "^([A-Z.\\s]+)\\s+(?:and|&|et|e)\\s+([A-Z.\\s]+)\\s+([[:alpha:]]{2,})\\s+([[:alpha:]]{2,})$" => "\\1 \\4 | \\2 \\3 \\4",
203
204
  "^([A-Z.\\s]+)\\s+(?:and|&|et|e)\\s+([A-Z.\\s]+)\\s+([[:alpha:]]{2,})(.*)" => "\\1 \\3 | \\2 \\3 | \\4",
204
205
  "^([A-Z][[:alpha:]]{2,}),\\s*?([A-Z][[:alpha:]]{2,})\\s*?[,&]\\s*?([A-Z][[:alpha:]]{2,})$" => "\\1 | \\2 | \\3",
205
206
  "^([A-Z][[:alpha:]]{2,}),\\s*?([A-Z][[:alpha:]]{2,}),\\s*?([A-Z][[:alpha:]]{2,})\\s*?[,&]\\s*?([A-Z][[:alpha:]]{3,})$" => "\\1 | \\2 | \\3 | \\4",
@@ -261,8 +262,7 @@ module DwcAgent
261
262
  (?i:submersible)|
262
263
  (?i:synonymy?)|
263
264
  (?i:systematic|perspective)|
264
- \s+(?i:off)\s+|
265
- \s*(?i:too)\s+|\s*(?i:the)\s+|
265
+ ^\s*(?i:off|too|the)\s*|
266
266
  (?i:taxiderm(ies|y))|
267
267
  (?i:though)|
268
268
  (?i:texas\s+instruments?)\s*?(for)?|
@@ -342,4 +342,26 @@ module DwcAgent
342
342
 
343
343
  SUFFIX = /\s*\b(JR|Jr|jr|SR|Sr|sr|[IVX]{2,})(\.|\b)/
344
344
 
345
+ PARTICLES = [
346
+ "ap",
347
+ "da",
348
+ "de",
349
+ "de'",
350
+ "del",
351
+ "der",
352
+ "des",
353
+ "di",
354
+ "do",
355
+ "dos",
356
+ "du",
357
+ "el",
358
+ "le",
359
+ "la",
360
+ "van",
361
+ "von",
362
+ "the",
363
+ "of",
364
+ "van der"
365
+ ]
366
+
345
367
  end
@@ -4,7 +4,7 @@ module DwcAgent
4
4
  MAJOR = 3
5
5
  MINOR = 0
6
6
  PATCH = 0
7
- BUILD = 7
7
+ BUILD = 10
8
8
 
9
9
  def self.version
10
10
  [MAJOR, MINOR, PATCH, BUILD].compact.join('.').freeze
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dwc_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.7
4
+ version: 3.0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - David P. Shorthouse
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-18 00:00:00.000000000 Z
11
+ date: 2022-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: namae