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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b689b96d8bc90ca647a1e11528aea5b02ae148d5a2b319a44f5739567312dc61
4
- data.tar.gz: aafa8e3c0c37a5d1719b69bd9fdef15060176408790c9f742d8c48a209781391
3
+ metadata.gz: 73b4305723e6d28afdb0f4dc7b5037abd284b3cf495704c89ee9be2ff16421eb
4
+ data.tar.gz: a7da23375b0d336259e602a24bc807e5f64f9d07a3b6d090d0d9c2e7ca7e28f5
5
5
  SHA512:
6
- metadata.gz: 4a39467d46ffcb67009b4c1e048ef6b11fcfec9c45db3c570b4759600bb920da2bb9060dc0e6c32f313c96fb2e66720cc7c7cdb93ad587542547af4da4b9631b
7
- data.tar.gz: c1cfb779ede8f36cb8502fea7a074cbb8e530c41df10b6d827175dec6392810be15ebbd37bfda667250541a5f2571dbb4ab8aea2419af0b99914bf182b887a39
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 conference manual proceedings presentation
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 patent
41
- inbook incollection inproceedings journal software website
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
- full_name_org(contrib) || person(contrib, reference) || organization(contrib)
224
- end.compact
225
- end
219
+ entity = person(contrib, lang) || organization(contrib)
220
+ next unless entity
226
221
 
227
- #
228
- # Parse organization from author element
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 reference [Nokogiri::XML::Element]
244
- # @return [Array<Hash{Symbol=>RelatonBib::Person,Symbol=>Array<String>}>]
245
- def person(author, reference)
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
- entity = Person.new(
249
- name: full_name(author, reference),
250
- affiliation: affiliation(author),
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 [Array<Hash{Symbol=>RelatonBib::Organization,
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
- { entity: new_org(name, org[:abbrev]), role: [contributor_role(contrib)] }
266
- # end
245
+ new_org name, org[:abbrev]
267
246
  end
268
247
 
269
- # @param author [Nokogiri::XML::Element]
270
- # @param reference [Nokogiri::XML::Element]
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(author, reference)
273
- lang = language reference
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(author[:fullname], lang),
277
- initials: initials, forename: forename(author[:initials], lang),
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
@@ -1,3 +1,3 @@
1
1
  module RelatonBib
2
- VERSION = "1.13.10".freeze
2
+ VERSION = "1.13.11".freeze
3
3
  end
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.10
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-17 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug