relaton-doi 1.14.1 → 1.14.2

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: 53cd51733991e0f69cc3d0323cd9dff42122523c3a8f2d8e2738b1408da5321b
4
- data.tar.gz: 7de2c0a2b3fa4369a832eaf1d655349bfe1682d86fc833da07be0243fadb7602
3
+ metadata.gz: d39addcfe400051b6cfadb759265bee674ace775bff92dab29a1c7f80891cd48
4
+ data.tar.gz: e24fa98bbfbff44bcb9b6b200c79750fe2f72ece457f67162a62324742a56cee
5
5
  SHA512:
6
- metadata.gz: 4981dfeb396011af9fa1773f565009306664828231709d0e9d8ffa939f8e6f170dd09b4fe0793a5abbbcea07d024444737359a21e4e433c1b191f97fa245fc24
7
- data.tar.gz: d599da84e5f7a0468decc094d449e7223dd63b5ff4a615993f34c882f43572fa9bb2287411228de21fc60c37c8c1b3572ae207b142335d4f618c6f8ad0d748c8
6
+ metadata.gz: 33bf3eabe2d1786be51d05960ad0aff732dc3ebceed3bde02979cb6e01790c2c2f65f221ca5d1f1567b73be3b28ceab9bb2ec4b8303e7165881a7c9d88b3f9ae
7
+ data.tar.gz: d3e180ade463b3e94785c271dd795b440b645426cecf914a6684b67eadd2313b22155eb31860d4602407c38e8266b031c962cd7affad9947c98361553109a4c8
@@ -111,6 +111,7 @@ module RelatonDoi
111
111
  place: create_place,
112
112
  relation: create_relation,
113
113
  extent: create_extent,
114
+ series: create_series,
114
115
  }
115
116
  end
116
117
 
@@ -214,27 +215,9 @@ module RelatonDoi
214
215
  obj << contributor(person(contrib), type)
215
216
  end
216
217
  end
217
- contribs += fetch_editors if contribs.none? { |e| e.role.any? { |r| r.type == "editor" } }
218
218
  contribs << contributor(org_publisher, "publisher")
219
219
  end
220
220
 
221
- #
222
- # Fetch editors from Crossref.
223
- #
224
- # @return [Array<RelatonBib::ContributionInfo>] The editors.
225
- #
226
- def fetch_editors # rubocop:disable Metrics/AbcSize
227
- title = @message["container-title"].first
228
- year = (@message["published"] || @message["approved"])["date-parts"][0][0]
229
- query = "#{title}, #{@message['publisher']}, #{@message['publisher-location']}, #{year}"
230
- resp = Faraday.get %{http://api.crossref.org/works?query.bibliographic="#{query}"&rows=5&filter=type:book}
231
- json = JSON.parse resp.body
232
- item = json["message"]["items"].detect { |i| i["title"].include?(title) && i["editor"] }
233
- return [] unless item
234
-
235
- item["editor"].map { |a| contributor(person(a), "editor") }
236
- end
237
-
238
221
  #
239
222
  # Cerate an organization publisher from the message hash.
240
223
  #
@@ -390,7 +373,8 @@ module RelatonDoi
390
373
  def create_relation # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
391
374
  rels = []
392
375
  @message["container-title"]&.each do |ct|
393
- bib = RelatonBib::BibliographicItem.new(title: [content: ct])
376
+ contrib = included_in_editors(ct)
377
+ bib = RelatonBib::BibliographicItem.new(title: [content: ct], contributor: contrib)
394
378
  rels << RelatonBib::DocumentRelation.new(type: "includedIn", bibitem: bib)
395
379
  end
396
380
  @message["relation"].each_with_object(rels) do |(k, v), a|
@@ -401,16 +385,63 @@ module RelatonDoi
401
385
  end
402
386
  end
403
387
 
388
+ #
389
+ # Fetch included in editors.
390
+ #
391
+ # @param [String] title container-title
392
+ #
393
+ # @return [Array<RelatonBib::ContributionInfo>] The editors contribution info.
394
+ #
395
+ def included_in_editors(title)
396
+ item = fetch_included_in title
397
+ return [] unless item
398
+
399
+ item["editor"].map { |e| contributor(person(e), "editor") }
400
+ end
401
+
402
+ #
403
+ # Fetch included in relation.
404
+ #
405
+ # @param [String] title container-title
406
+ #
407
+ # @return [Hash] The included in relation item.
408
+ #
409
+ def fetch_included_in(title) # rubocop:disable Metrics/AbcSize
410
+ year = (@message["published"] || @message["approved"])["date-parts"][0][0]
411
+ query = "#{title}, #{@message['publisher']}, #{@message['publisher-location']}, #{year}"
412
+ resp = Faraday.get %{http://api.crossref.org/works?query.bibliographic="#{query}"&rows=5&filter=type:book}
413
+ json = JSON.parse resp.body
414
+ json["message"]["items"].detect { |i| i["title"].include?(title) && i["editor"] }
415
+ end
416
+
404
417
  #
405
418
  # Create an extent from the message hash.
406
419
  #
407
420
  # @return [Array<RelatonBib::Locality>] The extent.
408
421
  #
409
- def create_extent
410
- return [] unless @message["page"]
422
+ def create_extent # rubocop:disable Metrics/AbcSize
423
+ extent = []
424
+ extent << RelatonBib::Locality.new("volume", @message["volume"]) if @message["volume"]
425
+ extent << RelatonBib::Locality.new("issue", @message["issue"]) if @message["issue"]
426
+ if @message["page"]
427
+ from, to = @message["page"].split("-")
428
+ extent << RelatonBib::Locality.new("page", from, to)
429
+ end
430
+ extent.any? ? [RelatonBib::LocalityStack.new(extent)] : []
431
+ end
411
432
 
412
- from, to = @message["page"].split("-")
413
- [RelatonBib::Locality.new("page", from, to)]
433
+ #
434
+ # Create a series from the message hash.
435
+ #
436
+ # @return [Arrey<RelatonBib::Series>] The series.
437
+ #
438
+ def create_series
439
+ return [] unless @message["container-title"]
440
+
441
+ @message["container-title"].map do |ct|
442
+ title = RelatonBib::TypedTitleString.new content: ct
443
+ RelatonBib::Series.new title: title
444
+ end
414
445
  end
415
446
  end
416
447
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonDoi
4
- VERSION = "1.14.1"
4
+ VERSION = "1.14.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-doi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.1
4
+ version: 1.14.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-11 00:00:00.000000000 Z
11
+ date: 2022-12-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equivalent-xml
@@ -208,7 +208,7 @@ licenses:
208
208
  - BSD-2-Clause
209
209
  metadata:
210
210
  homepage_uri: https://github.com/relaton/relaton-doi
211
- post_install_message:
211
+ post_install_message:
212
212
  rdoc_options: []
213
213
  require_paths:
214
214
  - lib
@@ -223,8 +223,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
223
223
  - !ruby/object:Gem::Version
224
224
  version: '0'
225
225
  requirements: []
226
- rubygems_version: 3.1.6
227
- signing_key:
226
+ rubygems_version: 3.2.3
227
+ signing_key:
228
228
  specification_version: 4
229
229
  summary: 'RelatonDOI: retrieve Standards for bibliographic using DOI through Crossrefand
230
230
  provide Relaton object.'