relaton-bib 1.13.10 → 1.13.11
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/relaton_bib/bibliographic_item.rb +3 -3
- data/lib/relaton_bib/bibxml_parser.rb +26 -46
- data/lib/relaton_bib/localized_string.rb +1 -1
- data/lib/relaton_bib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73b4305723e6d28afdb0f4dc7b5037abd284b3cf495704c89ee9be2ff16421eb
|
4
|
+
data.tar.gz: a7da23375b0d336259e602a24bc807e5f64f9d07a3b6d090d0d9c2e7ca7e28f5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c2c7c852ceac5da96237e9de8346269ad7ca3b8a8984915efac66df93507dbb7a16b8652ae84628019195d657a16dfc9c94d472b36c6bb8fd8efc05f1e614cac
|
7
|
+
data.tar.gz: cc5f8ba67a8d9c9563674c1e90f662c05feb82453ed939ea1f47a82ee2abc3887958119345f402918ca91f3ac5b6dfe829507f52ad65e955ef038cc3f23d7aff
|
@@ -35,10 +35,10 @@ module RelatonBib
|
|
35
35
|
class BibliographicItem
|
36
36
|
include RelatonBib
|
37
37
|
|
38
|
-
TYPES = %W[article book booklet
|
38
|
+
TYPES = %W[article book booklet manual proceedings presentation
|
39
39
|
thesis techreport standard unpublished map electronic\sresource
|
40
|
-
audiovisual film video broadcast graphic_work music
|
41
|
-
inbook incollection inproceedings journal
|
40
|
+
audiovisual film video broadcast software graphic_work music
|
41
|
+
patent inbook incollection inproceedings journal website
|
42
42
|
webresource dataset archival social_media alert message
|
43
43
|
conversation misc].freeze
|
44
44
|
|
@@ -12,11 +12,6 @@ module RelatonBib
|
|
12
12
|
"3GPP" => "3rd Generation Partnership Project",
|
13
13
|
}.freeze
|
14
14
|
|
15
|
-
FULLNAMEORG = [
|
16
|
-
"IAB", "Internet Architecture Board", "IAB and IESG", "IESG",
|
17
|
-
"IAB Advisory Committee", "Internet Engineering Steering Group"
|
18
|
-
].freeze
|
19
|
-
|
20
15
|
#
|
21
16
|
# Parse BibXML content
|
22
17
|
#
|
@@ -219,63 +214,47 @@ module RelatonBib
|
|
219
214
|
# @param reference [Nokogiri::XML::Element]
|
220
215
|
# @return [Array<Hash>]
|
221
216
|
def contributors(reference)
|
217
|
+
lang = language reference
|
222
218
|
reference.xpath("./front/author").map do |contrib|
|
223
|
-
|
224
|
-
|
225
|
-
end
|
219
|
+
entity = person(contrib, lang) || organization(contrib)
|
220
|
+
next unless entity
|
226
221
|
|
227
|
-
|
228
|
-
|
229
|
-
#
|
230
|
-
# @param [Nokogiri::XML::Element] contrib author element
|
231
|
-
#
|
232
|
-
# @return [Hash] contribution info
|
233
|
-
#
|
234
|
-
def full_name_org(contrib)
|
235
|
-
return unless self::FULLNAMEORG.include? contrib[:fullname]
|
236
|
-
|
237
|
-
role = contributor_role(contrib)
|
238
|
-
# role[:description] = ["BibXML author"]
|
239
|
-
{ entity: new_org(contrib[:fullname]), role: [role] }
|
222
|
+
{ entity: entity, role: [contributor_role(contrib)] }
|
223
|
+
end.compact
|
240
224
|
end
|
241
225
|
|
242
226
|
# @param author [Nokogiri::XML::Element]
|
243
|
-
# @param
|
244
|
-
# @return [
|
245
|
-
def person(author,
|
227
|
+
# @param lang [String]
|
228
|
+
# @return [RelatonBib::Person, nil]
|
229
|
+
def person(author, lang)
|
246
230
|
return unless author[:fullname] || author[:surname]
|
247
231
|
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
contact: contacts(author.at("./address")),
|
252
|
-
)
|
253
|
-
{ entity: entity, role: [contributor_role(author)] }
|
232
|
+
name = full_name(author[:fullname], author[:surname], author[:initials], lang)
|
233
|
+
Person.new(name: name, affiliation: affiliation(author),
|
234
|
+
contact: contacts(author.at("./address")))
|
254
235
|
end
|
255
236
|
|
256
237
|
# @param contrib [Nokogiri::XML::Element]
|
257
|
-
# @return [
|
258
|
-
# Symbol=>Array<String>}>]
|
238
|
+
# @return [RelatonBib::Organization, nil]
|
259
239
|
def organization(contrib)
|
260
240
|
org = contrib.at("./organization")
|
261
241
|
orgname = org.text.strip
|
262
242
|
return if orgname.empty?
|
263
243
|
|
264
244
|
name = ORGNAMES[orgname] || orgname
|
265
|
-
|
266
|
-
# end
|
245
|
+
new_org name, org[:abbrev]
|
267
246
|
end
|
268
247
|
|
269
|
-
# @param
|
270
|
-
# @param
|
248
|
+
# @param fname [String] full name
|
249
|
+
# @param sname [String] surname
|
250
|
+
# @param inits [String] initials
|
251
|
+
# @param lang [String] language
|
271
252
|
# @return [RelatonBib::FullName]
|
272
|
-
def full_name(
|
273
|
-
|
274
|
-
initials = localized_string(author[:initials], lang) if author[:initials]
|
253
|
+
def full_name(fname, sname, inits, lang)
|
254
|
+
initials = localized_string(inits, lang) if inits
|
275
255
|
FullName.new(
|
276
|
-
completename: localized_string(
|
277
|
-
|
278
|
-
surname: localized_string(author[:surname], lang)
|
256
|
+
completename: localized_string(fname, lang), initials: initials,
|
257
|
+
forename: forename(inits, lang), surname: localized_string(sname, lang)
|
279
258
|
)
|
280
259
|
end
|
281
260
|
|
@@ -287,11 +266,11 @@ module RelatonBib
|
|
287
266
|
#
|
288
267
|
# @return [Array<RelatonBib::Forename>] forenames
|
289
268
|
#
|
290
|
-
def forename(initials, lang)
|
269
|
+
def forename(initials, lang = nil, script = nil)
|
291
270
|
return [] unless initials
|
292
271
|
|
293
272
|
initials.split(/\.-?\s?|\s/).map do |i|
|
294
|
-
Forename.new(initial: i, language: lang)
|
273
|
+
Forename.new(initial: i, language: lang, script: script)
|
295
274
|
end
|
296
275
|
end
|
297
276
|
|
@@ -314,9 +293,10 @@ module RelatonBib
|
|
314
293
|
|
315
294
|
# @param content [String, nil]
|
316
295
|
# @param lang [String, nil]
|
296
|
+
# @param script [String, nil]
|
317
297
|
# @return [RelatonBib::LocalizedString, nil]
|
318
|
-
def localized_string(content, lang)
|
319
|
-
LocalizedString.new(content, lang) if content
|
298
|
+
def localized_string(content, lang, script = nil)
|
299
|
+
LocalizedString.new(content, lang, script) if content
|
320
300
|
end
|
321
301
|
|
322
302
|
# @param postal [Nokogiri::XML::Element]
|
@@ -92,7 +92,7 @@ module RelatonBib
|
|
92
92
|
HTMLEntities.new.encode str.dup.force_encoding("UTF-8")
|
93
93
|
end
|
94
94
|
|
95
|
-
# @return [Hash]
|
95
|
+
# @return [Hash, Array<Hash>]
|
96
96
|
def to_hash # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity
|
97
97
|
if content.nil? || content.is_a?(String)
|
98
98
|
# return content unless language || script
|
data/lib/relaton_bib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-bib
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.13.
|
4
|
+
version: 1.13.11
|
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-
|
11
|
+
date: 2022-10-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: byebug
|