relaton-ietf 1.13.5 → 1.13.6

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
  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