relaton-bib 1.10.4 → 1.10.7

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: 826acb78507045bc31dd931b706331e248a682507b1454df64d957f97a856fce
4
- data.tar.gz: 2a8bd874712691f4586d0a0d75f4c102731d592abf484ddd70a97cc7a2d72c24
3
+ metadata.gz: 97f3e3e14c073c18fac8b204483116de57d77338ed7de3ce6f03c75da41fd0c1
4
+ data.tar.gz: 713f4591e31ff1538b31f75bff7b6e1d4770a8f87fbd5e01445968cf8e6ffb8c
5
5
  SHA512:
6
- metadata.gz: ff8a95d1afc8c44ce738e6c48cefa65d87fe2f5f2d431e5d5933d8ded66ba577797e55933b8f8082f6dc21841ec68dc3de16c8579d7b5a5af539229f183700c2
7
- data.tar.gz: a2a7c1b255cffefcc84c93542062ff42a34b4b6e3c6b1077cb3f6a49c4c2002724ab6cb2f20d54a53fd6a06c423a7a0b43b762ebc0417be30bb85055116cc4a5
6
+ metadata.gz: c75ffe32176bb63fa2d9ff7717312ac15dce830622cf8db699628f4a93f45e8f4907431120236d726d1cc9a5d1fcb91e1b5ca39772ac70429fec44cfb7dd198a
7
+ data.tar.gz: c4bad97d2b455e787e3e4e8eed11b8e7e466eb288655e2055b0d7fa38c236a7e02f59701cc7c693230879a5116c7872fa16bd70ada9827535894542841d9d716
@@ -834,7 +834,8 @@ module RelatonBib
834
834
  return attrs if attrs.any?
835
835
 
836
836
  docidentifier.first&.tap do |di|
837
- return { anchor: di.id.gsub(" ", ".") }
837
+ anchor = di.type == "IANA" ? di.id.split[1..-1].join(" ").upcase : di.id
838
+ return { anchor: anchor.gsub(" ", ".") }
838
839
  end
839
840
  end
840
841
 
@@ -2,6 +2,7 @@ module RelatonBib
2
2
  module BibXMLParser
3
3
  # SeriesInfo what should be saved as docidentifiers in the Relaton model.
4
4
  SERIESINFONAMES = ["DOI"].freeze
5
+ RFCPREFIXES = %w[RFC BCP FYI STD].freeze
5
6
 
6
7
  FLAVOR = nil
7
8
 
@@ -82,14 +83,20 @@ module RelatonBib
82
83
  id.sub!(/(?<=-)\d{2}$/, ver) if ver
83
84
  ret << DocumentIdentifier.new(type: "Internet-Draft", id: id, primary: true)
84
85
  else
85
- id = reference["anchor"] || reference["docName"] || reference["number"]
86
+ id = reference[:anchor] || reference[:docName] || reference[:number]
86
87
  ret << create_docid(id, ver) if id
87
88
  end
88
89
 
89
90
  %w[anchor docName number].each do |atr|
90
91
  if reference[atr]
92
+ pref, num = id_to_pref_num reference[atr]
93
+ atrid = if atr == "anchor" && RFCPREFIXES.include?(pref)
94
+ "#{pref}#{num.sub(/^-?0+/, '')}"
95
+ else
96
+ reference[atr]
97
+ end
91
98
  type = pubid_type id
92
- ret << DocumentIdentifier.new(id: reference[atr], type: type, scope: atr)
99
+ ret << DocumentIdentifier.new(id: atrid, type: type, scope: atr)
93
100
  end
94
101
  end
95
102
 
@@ -104,16 +111,15 @@ module RelatonBib
104
111
 
105
112
  def create_docid(id, ver) # rubocop:disable Metrics/MethodLength
106
113
  pref, num = id_to_pref_num(id)
107
- if %w[RFC BCP FYI STD].include?(pref)
108
- num.sub!(/^-?0+/, "")
109
- pid = "#{pref} #{num}"
114
+ if RFCPREFIXES.include?(pref)
115
+ pid = "#{pref} #{num.sub(/^-?0+/, '')}"
110
116
  type = pubid_type id
111
117
  elsif %w[I-D draft].include?(pref)
112
118
  pid = "draft-#{num}"
113
119
  pid.sub!(/(?<=-)\d{2}$/, ver) if ver
114
120
  type = "Internet-Draft"
115
121
  else
116
- pid = pref ? "#{pref} #{num}" : num
122
+ pid = pref ? "#{pref} #{num}" : id
117
123
  type = pubid_type id
118
124
  end
119
125
  DocumentIdentifier.new(type: type, id: pid, primary: true)
@@ -333,16 +339,15 @@ module RelatonBib
333
339
  # @param reference [Nokogiri::XML::Element]
334
340
  # @return [Array<RelatonBib::BibliographicDate>] published data.
335
341
  #
336
- def dates(reference)
337
- return [] unless (date = reference.at "./front/date")
342
+ def dates(reference) # rubocop:disable Metrics/CyclomaticComplexity, Metrics/AbcSize
343
+ date = reference.at "./front/date"
344
+ return [] if date.nil? || date[:year].nil? || date[:year].empty?
338
345
 
339
346
  d = date[:year]
340
347
  d += "-#{month(date[:month])}" if date[:month] && !date[:month].empty?
341
348
  d += "-#{date[:day]}" if date[:day]
342
349
  # date = Time.parse(d).strftime "%Y-%m-%d"
343
350
  [BibliographicDate.new(type: "published", on: d)]
344
- # rescue ArgumentError
345
- # []
346
351
  end
347
352
 
348
353
  # @param reference [Nokogiri::XML::Element]
@@ -1,3 +1,3 @@
1
1
  module RelatonBib
2
- VERSION = "1.10.4".freeze
2
+ VERSION = "1.10.7".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.10.4
4
+ version: 1.10.7
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-03-01 00:00:00.000000000 Z
11
+ date: 2022-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug