relaton-bib 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,6 +20,7 @@ module RelatonBib
20
20
 
21
21
  # @return [Hash]
22
22
  def item_data(bibitem)
23
+ ext = bibitem.at "//ext"
23
24
  {
24
25
  id: bibitem[:id]&.empty? ? nil : bibitem[:id],
25
26
  type: bibitem[:type]&.empty? ? nil : bibitem[:type],
@@ -49,6 +50,10 @@ module RelatonBib
49
50
  keyword: bibitem.xpath("keyword").map(&:text),
50
51
  license: bibitem.xpath("license").map(&:text),
51
52
  validity: fetch_validity(bibitem),
53
+ doctype: ext&.at("doctype")&.text,
54
+ editorialgroup: fetch_editorialgroup(ext),
55
+ ics: fetch_ics(ext),
56
+ structuredidentifier: fetch_structuredidentifier(ext),
52
57
  }
53
58
  end
54
59
  # rubocop:enable Metrics/MethodLength, Metrics/AbcSize
@@ -351,7 +356,7 @@ module RelatonBib
351
356
  if lc[:type]
352
357
  LocalityStack.new [locality(lc)]
353
358
  else
354
- LocalityStack.new lc.xpath("./locality").map { |l| locality l }
359
+ LocalityStack.new(lc.xpath("./locality").map { |l| locality l })
355
360
  end
356
361
  end
357
362
  end
@@ -359,7 +364,7 @@ module RelatonBib
359
364
  # @param loc [Nokogiri::XML::Element]
360
365
  # @return [RelatonBib::Locality]
361
366
  def locality(loc, klass = Locality)
362
- ref_to = (rt = loc.at("./referenceTo")) ? LocalizedString.new(rt.text) : nil
367
+ ref_to = (rt = loc.at("./referenceTo")) && LocalizedString.new(rt.text)
363
368
  klass.new(
364
369
  loc[:type],
365
370
  LocalizedString.new(loc.at("./referenceFrom").text),
@@ -391,6 +396,53 @@ module RelatonBib
391
396
  language: ident[:language], script: ident[:script]
392
397
  )
393
398
  end
399
+
400
+ # @param ext [Nokogiri::XML::Element]
401
+ # @return [RelatonBib::EditorialGroup, nil]
402
+ def fetch_editorialgroup(ext)
403
+ return unless ext && (eg = ext.at "editorialgroup")
404
+
405
+ eg = eg.xpath("technical-committee").map do |tc|
406
+ wg = WorkGroup.new(content: tc.text, number: tc[:number]&.to_i,
407
+ type: tc[:type])
408
+ TechnicalCommittee.new wg
409
+ end
410
+ EditorialGroup.new eg if eg.any?
411
+ end
412
+
413
+ def fetch_ics(ext)
414
+ return [] unless ext
415
+
416
+ ext.xpath("ics").map do |ics|
417
+ ICS.new code: ics.at("code").text, text: ics.at("text").text
418
+ end
419
+ end
420
+
421
+ # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
422
+
423
+ # @param ext [Nokogiri::XML::Element]
424
+ # @return [RelatonBib::StructuredIdentifierCollection]
425
+ def fetch_structuredidentifier(ext)
426
+ return unless ext
427
+
428
+ sids = ext.xpath("structuredidentifier").map do |si|
429
+ StructuredIdentifier.new(
430
+ type: si[:type],
431
+ agency: si.xpath("agency").map(&:text),
432
+ class: si.at("class")&.text,
433
+ docnumber: si.at("docnumber")&.text,
434
+ partnumber: si.at("partnumber")&.text,
435
+ edition: si.at("edition")&.text,
436
+ version: si.at("version")&.text,
437
+ supplementtype: si.at("supplementtype")&.text,
438
+ supplementnumber: si.at("supplementnumber")&.text,
439
+ language: si.at("language")&.text,
440
+ year: si.at("year")&.text,
441
+ )
442
+ end
443
+ StructuredIdentifierCollection.new sids
444
+ end
445
+ # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
394
446
  end
395
447
  end
396
448
  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.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-03 00:00:00.000000000 Z
11
+ date: 2020-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -201,6 +201,10 @@ files:
201
201
  - bin/rspec
202
202
  - bin/setup
203
203
  - docs/hash.adoc
204
+ - grammars/basicdoc.rng
205
+ - grammars/biblio.rng
206
+ - grammars/isodoc.rng
207
+ - grammars/reqt.rng
204
208
  - lib/relaton_bib.rb
205
209
  - lib/relaton_bib/bib_item_locality.rb
206
210
  - lib/relaton_bib/biblio_note.rb
@@ -217,22 +221,27 @@ files:
217
221
  - lib/relaton_bib/document_relation.rb
218
222
  - lib/relaton_bib/document_relation_collection.rb
219
223
  - lib/relaton_bib/document_status.rb
224
+ - lib/relaton_bib/editorial_group.rb
220
225
  - lib/relaton_bib/formatted_ref.rb
221
226
  - lib/relaton_bib/formatted_string.rb
222
227
  - lib/relaton_bib/hash_converter.rb
223
228
  - lib/relaton_bib/hit.rb
224
229
  - lib/relaton_bib/hit_collection.rb
230
+ - lib/relaton_bib/ics.rb
225
231
  - lib/relaton_bib/localized_string.rb
226
232
  - lib/relaton_bib/medium.rb
227
233
  - lib/relaton_bib/organization.rb
228
234
  - lib/relaton_bib/person.rb
229
235
  - lib/relaton_bib/place.rb
230
236
  - lib/relaton_bib/series.rb
237
+ - lib/relaton_bib/structured_identifier.rb
238
+ - lib/relaton_bib/technical_committee.rb
231
239
  - lib/relaton_bib/typed_title_string.rb
232
240
  - lib/relaton_bib/typed_uri.rb
233
241
  - lib/relaton_bib/validity.rb
234
242
  - lib/relaton_bib/version.rb
235
243
  - lib/relaton_bib/workers_pool.rb
244
+ - lib/relaton_bib/workgroup.rb
236
245
  - lib/relaton_bib/xml_parser.rb
237
246
  - relaton-bib.gemspec
238
247
  homepage: https://github.com/relaton/relaton-bib