relaton-ietf 1.13.5 → 1.13.6

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: 48b025f8949b55b5df8b2655037fed2d843721ae2e7c2d33c287f3dd5916ccc3
4
- data.tar.gz: 263251fa0ee6063de9ed33e8af021041aaa71b95abf0547c809e643eae8a29ed
3
+ metadata.gz: 8d5d9ec768b99a9f7dc61438afe510562005322438b5fff41fe04069111d73e0
4
+ data.tar.gz: 410398ba75786d32f94fb8e90303f507e6842b5eee84d57c3647bee8d539975c
5
5
  SHA512:
6
- metadata.gz: 45d31fe5d94624e4a81762502daecf1be53759fb543e93fcb0b7a1a91a8f326ba4f01294344aca18fe7581df671a61dbb7cf8617f56204e25a71acd7c65b6d80
7
- data.tar.gz: d301e5635a36a9c0f2897f33561398c7f4c31db4c5477cbc8050c7b5b9902b83282e234f03bb0823794edf200b40b9e825cc396f4a56c541ca500bfada2a9175
6
+ metadata.gz: 2bf9b65a7fd0e7b4702ddf9b35e8be78a308dccfaa85b83b9def4ea37192718abced81fb02e58d356ee600b421cde8deb190e8e3ffa10adc5882fad10b6db92b
7
+ data.tar.gz: 1edd378c32a456117f226dbef2b851f761e50e618b8962e022df096ac1557f7f081b1010c5e1cd22986b92b3bb593d58848703105631eb4f01b612f5e8fe3456
@@ -106,20 +106,50 @@ module RelatonIetf
106
106
  # @return [RelatonBib::FullName]
107
107
  #
108
108
  def full_name(fname, sname, inits, lang, script = nil)
109
- surname, ints = parse_surname_initials fname, sname, inits
109
+ surname, ints, name = parse_surname_initials fname, sname, inits
110
110
  initials = localized_string(ints, lang, script)
111
111
  RelatonBib::FullName.new(
112
112
  completename: localized_string(fname, lang, script),
113
- initials: initials, forename: forename(ints, lang, script),
113
+ initials: initials, forename: forename(ints, name, lang, script),
114
114
  surname: localized_string(surname, lang, script)
115
115
  )
116
116
  end
117
117
 
118
+ #
119
+ # Create forenames with initials
120
+ #
121
+ # @param [String] initials initials
122
+ # @param [String] lang language
123
+ #
124
+ # @return [Array<RelatonBib::Forename>] forenames
125
+ #
126
+ def forename(initials, name, lang = nil, script = nil)
127
+ fnames = []
128
+ if name
129
+ fnames << RelatonBib::Forename.new(content: name, language: lang, script: script)
130
+ end
131
+ return fnames unless initials
132
+
133
+ initials.split(/\.-?\s?|\s/).each_with_object(fnames) do |i, a|
134
+ a << RelatonBib::Forename.new(initial: i, language: lang, script: script)
135
+ end
136
+ end
137
+
138
+ #
139
+ # Parse name, surname, and initials from full name
140
+ #
141
+ # @param [String] fname full name
142
+ # @param [String, nil] sname surname
143
+ # @param [String, nil] inits
144
+ #
145
+ # @return [Array<String, nil>] surname, initials, forename
146
+ #
118
147
  def parse_surname_initials(fname, sname, inits)
119
- regex = /(?:[A-Z]{1,2}(?:\.[\s-]?|\s))+/
148
+ regex = /(?:(?<name>\w{3,})\s)?(?<inits>(?:[A-Z]{1,2}(?:\.[\s-]?|\s))+)?/
149
+ match = fname.match(regex)
120
150
  surname = sname || fname.sub(regex, "").strip
121
- initials = inits || regex.match(fname)&.to_s&.strip
122
- [surname, initials]
151
+ initials = inits || match[:inits]&.strip
152
+ [surname, initials, match[:name]]
123
153
  end
124
154
  end
125
155
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonIetf
2
- VERSION = "1.13.5".freeze
2
+ VERSION = "1.13.6".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-ietf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.5
4
+ version: 1.13.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-10-20 00:00:00.000000000 Z
11
+ date: 2022-10-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equivalent-xml