relaton-bib 1.13.10 → 1.13.11
Sign up to get free protection for your applications and to get access to all the features.
- 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
|