relaton-ietf 1.9.4 → 1.9.8

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: 639209bd0a93d43f7d9d671d709a40e635ef7978ac33b502afde91b64e03c857
4
- data.tar.gz: d33475e9becda05d7eadc6b9e48e3df700aa4620dc6081811708faddd84b650f
3
+ metadata.gz: 9c56a40e6b16ec11c29b7b10ade3c09b071f4eddc84402d8d22909af910af8fa
4
+ data.tar.gz: 619f416b504b40dc9515cc2ca05c2bd3abffc2fc800eb473adfd2366bb63e068
5
5
  SHA512:
6
- metadata.gz: 87f20d0e95cc16aa9462b78cf67eef1ca40e0124bda85ec2a480de960b44d33ef333083ce25fdd2fff6e109b071fdbf2cf27226c210eef65331b1786daa59f85
7
- data.tar.gz: 3865277ac823c1fe10731a813ca5085d9e3ced27bb5af6e1bb53cb9a7c952c76e47f249cbb6cc013293c5ba2f46410f309689be307e55e1fc1aff4d508219d88
6
+ metadata.gz: 27fe700492c5e5d7b4f437a281912c2719cc18ec9656c85db6289a978847043f5e52ba011d2e1801304744166ce9091ba24ce5ec00005d5edde09d4d10a0cd8c
7
+ data.tar.gz: 94919d5a441b27673e10315d5f5cd8670515de252b0e925fb431d9698bfd8e5a40e719684ad61019e93471eb0add922743a6abd98abafd2402b18de764ca09a5
data/README.adoc CHANGED
@@ -149,16 +149,6 @@ Arguments:
149
149
  - `output` - folder to save documents (default './data').
150
150
  - `format` - format in which the documents are saved. Possimle formats are: `yaml`, `xml`, `bibxml` (default `yaml`).
151
151
 
152
- For `ietf-rfcsubseries` dataset only special XML format is supported:
153
-
154
- [sourse.xml]
155
- ----
156
- <referencegroup anchor="BCP14" target="https://www.rfc-editor.org/info/bcp14">
157
- <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.2119.xml" />
158
- <xi:include href="https://www.rfc-editor.org/refs/bibxml/reference.RFC.8174.xml" />
159
- </referencegroup>
160
- ----
161
-
162
152
  [source,ruby]
163
153
  ----
164
154
  RelatonIetf::DataFetcher.fetch "ietf-internet-drafts"
@@ -7,7 +7,7 @@ module Relaton
7
7
  def from_rfcxml(xml)
8
8
  doc = Nokogiri::XML xml
9
9
  reference = doc.at "/rfc"
10
- RelatonIetf::Scrapper.fetch_rfc reference
10
+ RelatonIetf::BibXMLParser.fetch_rfc reference
11
11
  end
12
12
  end
13
13
  end
@@ -0,0 +1,31 @@
1
+ module RelatonIetf
2
+ module BibXMLParser
3
+ include RelatonBib::BibXMLParser
4
+ extend BibXMLParser
5
+
6
+ FLAVOR = "IETF".freeze
7
+
8
+ # @param attrs [Hash]
9
+ # @return [RelatonIetf::IetfBibliographicItem]
10
+ def bib_item(**attrs)
11
+ unless attrs.delete(:is_relation)
12
+ attrs[:fetched] = Date.today.to_s
13
+ attrs[:place] = ["Fremont, CA"]
14
+ end
15
+ RelatonIetf::IetfBibliographicItem.new(**attrs)
16
+ end
17
+
18
+ # @param [RelatonBib::WorkGroup]
19
+ # @return [RelatonIetf::Committee]
20
+ def committee(wgr)
21
+ Committee.new wgr
22
+ end
23
+
24
+ # @param reference [Nokogiri::XML::Element]
25
+ # @return [Array<Hash>]
26
+ def contributors(reference)
27
+ [{ entity: new_org("Internet Engineering Task Force", "IETF"), role: [type: "publisher"] }] + super
28
+ # persons(reference) + organizations(reference)
29
+ end
30
+ end
31
+ end
@@ -17,7 +17,7 @@ module RelatonIetf
17
17
  def initialize(source, output, format)
18
18
  @source = source
19
19
  @output = output
20
- @format = source == "ietf-rfcsubseries" ? "rfcxml" : format
20
+ @format = format
21
21
  @ext = @format.sub(/^bib|^rfc/, "")
22
22
  @files = []
23
23
  end
@@ -99,7 +99,6 @@ module RelatonIetf
99
99
  c = case @format
100
100
  when "xml" then entry.to_xml(bibdata: true)
101
101
  when "yaml" then entry.to_hash.to_yaml
102
- when "rfcxml" then entry.to_xml
103
102
  else entry.send("to_#{@format}")
104
103
  end
105
104
  file = file_name entry
@@ -120,9 +119,12 @@ module RelatonIetf
120
119
  #
121
120
  def file_name(entry)
122
121
  id = if entry.respond_to? :docidentifier
123
- entry.docidentifier.detect { |i| i.type == "Internet-Draft" }&.id&.downcase
122
+ entry.docidentifier.detect { |i| i.type == "Internet-Draft" }&.id
124
123
  end
125
- id ||= entry.docnumber.upcase
124
+ id ||= entry.docnumber
125
+ if @source == "ietf-internet-drafts" then id.downcase!
126
+ else id.upcase!
127
+ end
126
128
  name = id.gsub(/[\s,:\/]/, "_").squeeze("_")
127
129
  File.join @output, "#{name}.#{@ext}"
128
130
  end
@@ -6,7 +6,7 @@ module RelatonIetf
6
6
  def initialize # rubocop:disable Lint/MissingSuper
7
7
  @short = :relaton_ietf
8
8
  @prefix = "IETF"
9
- @defaultprefix = /^RFC /
9
+ @defaultprefix = /^(IETF|RFC|BCP)\s/
10
10
  @idtype = "IETF"
11
11
  @datasets = %w[ietf-rfcsubseries ietf-internet-drafts ietf-rfc-entries]
12
12
  end
@@ -3,8 +3,9 @@ module RelatonIetf
3
3
  #
4
4
  # Document parser initalization
5
5
  #
6
+ # @param [String] name document type name
6
7
  # @param [String] doc_id document id
7
- # @param [Array<String>] is_also also document ids
8
+ # @param [Array<String>] is_also included document ids
8
9
  #
9
10
  def initialize(name, doc_id, is_also)
10
11
  @name = name
@@ -13,15 +14,6 @@ module RelatonIetf
13
14
  @is_also = is_also
14
15
  end
15
16
 
16
- #
17
- # Document id
18
- #
19
- # @return [Strinng] document id
20
- #
21
- def docnumber
22
- @doc_id
23
- end
24
-
25
17
  #
26
18
  # Initialize document parser and run it
27
19
  #
@@ -35,26 +27,61 @@ module RelatonIetf
35
27
  return unless doc_id && is_also.any?
36
28
 
37
29
  name = doc.name.split("-").first
38
- new(name, doc_id.text, is_also)
30
+ new(name, doc_id.text, is_also).parse
31
+ end
32
+
33
+ def parse
34
+ IetfBibliographicItem.new(
35
+ docnumber: docnumber,
36
+ type: "standard",
37
+ docid: parse_docid,
38
+ language: ["en"],
39
+ script: ["Latn"],
40
+ link: parse_link,
41
+ formattedref: formattedref,
42
+ relation: parse_relation,
43
+ )
39
44
  end
40
45
 
41
46
  #
42
- # Render document as XML
47
+ # Document id
43
48
  #
44
- # @return [String] XML
49
+ # @return [Strinng] document id
45
50
  #
46
- def to_xml # rubocop:disable Metrics/MethodLength
47
- Nokogiri::XML::Builder.new do |xml|
48
- anchor = "#{@name.upcase}#{@shortnum}"
49
- url = "https://www.rfc-editor.org/info/#{@name}#{@shortnum}"
50
- xml.referencegroup("xmlns:xi" => "http://www.w3.org/2001/XInclude",
51
- anchor: anchor, target: url) do
52
- @is_also.each do |did|
53
- num = did[-4..-1]
54
- xml["xi"].send("include", href: "https://www.rfc-editor.org/refs/bibxml/reference.RFC.#{num}.xml")
55
- end
56
- end
57
- end.doc.root.to_xml
51
+ def docnumber
52
+ @doc_id
53
+ end
54
+
55
+ def parse_docid
56
+ [
57
+ RelatonBib::DocumentIdentifier.new(type: "IETF", scope: "rfc-anchor", id: anchor),
58
+ # RelatonBib::DocumentIdentifier.new(type: "rfc-anchor", id: anchor),
59
+ ]
60
+ end
61
+
62
+ # def pub_id
63
+ # "IETF #{@name.upcase} #{@shortnum}"
64
+ # end
65
+
66
+ def anchor
67
+ "#{@name.upcase}#{@shortnum}"
68
+ end
69
+
70
+ def parse_link
71
+ [RelatonBib::TypedUri.new(type: "src", content: "https://www.rfc-editor.org/info/#{@name}#{@shortnum}")]
72
+ end
73
+
74
+ def formattedref
75
+ RelatonBib::FormattedRef.new(
76
+ content: anchor, language: "en", script: "Latn",
77
+ )
78
+ end
79
+
80
+ def parse_relation
81
+ @is_also.map do |ref|
82
+ bib = IetfBibliography.get ref.sub(/^(RFC)(\d+)/, '\1 \2')
83
+ { type: "includes", bibitem: bib }
84
+ end
58
85
  end
59
86
  end
60
87
  end
@@ -1,17 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "net/http"
4
- require "relaton_bib"
5
- require "relaton_ietf/ietf_bibliographic_item"
6
-
7
3
  module RelatonIetf
8
4
  # Scrapper module
9
5
  module Scrapper
10
- extend RelatonBib::BibXMLParser
11
6
  extend Scrapper
12
7
 
13
- FLAVOR = "IETF"
14
-
15
8
  GH_URL = "https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference."
16
9
 
17
10
  # @param text [String]
@@ -24,76 +17,13 @@ module RelatonIetf
24
17
  ref.sub!(/(?<=^(?:RFC|BCP|FYI|STD)\s)(\d+)/, num.rjust(4, "0")) if num
25
18
  rfc_item ref, is_relation
26
19
  rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
27
- Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
28
- Net::ProtocolError, SocketError
20
+ Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
21
+ Net::ProtocolError, SocketError
29
22
  raise RelatonBib::RequestError, "No document found for #{ref} reference"
30
23
  end
31
24
 
32
- # @param reference [Nokogiri::XML::Element, nil]
33
- # @param is_relation [Boolean] don't add fetched date for relation
34
- # @param url [String, NilClass]
35
- # @param ver [String, NilClass] Internet Draft version
36
- # @return [RelatonBib::tfBibliographicItem]
37
- # def fetch_rfc(reference, is_relation: false, url: nil, ver: nil) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
38
- # return unless reference
39
-
40
- # hash = {
41
- # id: reference[:anchor],
42
- # type: "standard",
43
- # docid: docids(reference, ver),
44
- # status: status(reference),
45
- # language: [language(reference)],
46
- # script: ["Latn"],
47
- # link: link(reference, url, ver),
48
- # title: titles(reference),
49
- # formattedref: formattedref(reference),
50
- # abstract: abstracts(reference),
51
- # contributor: contributors(reference),
52
- # relation: relations(reference),
53
- # date: dates(reference),
54
- # series: series(reference),
55
- # keyword: reference.xpath("front/keyword").map(&:text),
56
- # doctype: doctype(reference[:anchor]),
57
- # }
58
- # hash[:fetched] = Date.today.to_s unless is_relation
59
- # bib_item(**hash)
60
- # end
61
-
62
25
  private
63
26
 
64
- # @param anchor [String]
65
- # @return [String]
66
- # def doctype(anchor)
67
- # anchor&.include?("I-D") ? "internet-draft" : "rfc"
68
- # end
69
-
70
- # @param reference [Nokogiri::XML::Element]
71
- # @param url [String]
72
- # @param ver [String, NilClass] Internet Draft version
73
- # @return [Array<Hash>]
74
- # def link(reference, url, ver)
75
- # l = []
76
- # l << { type: "xml", content: url } if url
77
- # l << { type: "src", content: reference[:target] } if reference[:target]
78
- # if /^I-D/.match? reference[:anchor]
79
- # reference.xpath("format").each do |f|
80
- # c = ver ? f[:target].sub(/(?<=-)\d{2}(?=\.)/, ver) : f[:target]
81
- # l << { type: f[:type], content: c }
82
- # end
83
- # end
84
- # l
85
- # end
86
-
87
- # @param attrs [Hash]
88
- # @return [RelatonIetf::IetfBibliographicItem]
89
- def bib_item(**attrs)
90
- unless attrs.delete(:is_relation)
91
- attrs[:fetched] = Date.today.to_s
92
- attrs[:place] = ["Fremont, CA"]
93
- end
94
- RelatonIetf::IetfBibliographicItem.new(**attrs)
95
- end
96
-
97
27
  # @param ref [String]
98
28
  # @param is_relation [Boolen, nil]
99
29
  # @return [RelatonIetf::IetfBibliographicItem]
@@ -108,17 +38,9 @@ module RelatonIetf
108
38
  # doc = Nokogiri::XML get_page(uri)
109
39
  # r = doc.at("/referencegroup", "/reference")
110
40
  # fetch_rfc r, is_relation: is_relation, url: uri, ver: ver
111
- parse get_page(uri), url: uri, is_relation: is_relation, ver: ver
41
+ BibXMLParser.parse get_page(uri), url: uri, is_relation: is_relation, ver: ver
112
42
  end
113
43
 
114
- # @param reference [Nokogiri::XML::Element]
115
- # @return [Hash]
116
- # def relations(reference)
117
- # reference.xpath("reference").map do |ref|
118
- # { type: "includes", bibitem: fetch_rfc(ref, is_relation: true) }
119
- # end
120
- # end
121
-
122
44
  # @param uri [String]
123
45
  # @return [String] HTTP response body
124
46
  def get_page(uri)
@@ -127,251 +49,5 @@ module RelatonIetf
127
49
 
128
50
  res.body
129
51
  end
130
-
131
- # @param [RelatonBib::WorkGroup]
132
- # @return [RelatonIetf::Committee]
133
- def committee(wgr)
134
- Committee.new wgr
135
- end
136
-
137
- # @param reference [Nokogiri::XML::Element]
138
- # @return [String]
139
- # def language(reference)
140
- # reference[:lang] || "en"
141
- # end
142
-
143
- # @param reference [Nokogiri::XML::Element]
144
- # @return [Array<Hash>]
145
- # def titles(reference)
146
- # reference.xpath("./front/title").map do |title|
147
- # { content: title.text, language: language(reference), script: "Latn" }
148
- # end
149
- # end
150
-
151
- # @param reference [Nokogiri::XML::Element]
152
- # @return [RelatonBib::FormattedRef, nil]
153
- # def formattedref(reference)
154
- # return if reference.at "./front/title"
155
-
156
- # cont = (reference[:anchor] || reference[:docName] || reference[:number])
157
- # if cont
158
- # RelatonBib::FormattedRef.new(
159
- # content: cont, language: language(reference), script: "Latn",
160
- # )
161
- # end
162
- # end
163
-
164
- # @param reference [Nokogiri::XML::Element]
165
- # @return [Array<RelatonBib::FormattedString>]
166
- # def abstracts(ref)
167
- # ref.xpath("./front/abstract").map do |a|
168
- # RelatonBib::FormattedString.new(
169
- # content: a.text.gsub(/\\n\\t{2,4}/, " ").strip,
170
- # language: language(ref), script: "Latn"
171
- # )
172
- # end
173
- # end
174
-
175
- # @param reference [Nokogiri::XML::Element]
176
- # @return [Array<Hash>]
177
- def contributors(reference)
178
- [{ entity: new_org("Internet Engineering Task Force", "IETF"), role: [type: "publisher"] }] + super
179
- # persons(reference) + organizations(reference)
180
- end
181
-
182
- # @param reference [Nokogiri::XML::Element]
183
- # @return [Array<Hash{Symbol=>RelatonBib::Person,Symbol=>Array<String>}>]
184
- # def persons(reference)
185
- # reference.xpath("./front/author[@surname]|./front/author[@fullname]")
186
- # .map do |author|
187
- # entity = RelatonBib::Person.new(
188
- # name: full_name(author, reference),
189
- # affiliation: affiliation(author),
190
- # contact: contacts(author.at("./address")),
191
- # )
192
- # { entity: entity, role: [contributor_role(author)] }
193
- # end
194
- # end
195
-
196
- # @param reference [Nokogiri::XML::Element]
197
- # @return [Array<Hash{Symbol=>RelatonBib::Organization,
198
- # Symbol=>Array<String>}>]
199
- # def organizations(reference)
200
- # publisher = { entity: new_org, role: [type: "publisher"] }
201
- # orgs = reference.xpath("./seriesinfo").reduce([publisher]) do |mem, si|
202
- # next mem unless si[:stream]
203
-
204
- # mem << { entity: new_org(si[:stream], nil), role: [type: "author"] }
205
- # end
206
- # orgs + reference.xpath(
207
- # "front/author[not(@surname)][not(@fullname)]/organization",
208
- # ).map do |org|
209
- # { entity: new_org(org.text, nil), role: [type: "author"] }
210
- # end
211
- # end
212
-
213
- # @param author [Nokogiri::XML::Element]
214
- # @param ref [Nokogiri::XML::Element]
215
- # @return [RelatonBib::FullName]
216
- # def full_name(author, ref)
217
- # lang = language ref
218
- # RelatonBib::FullName.new(
219
- # completename: localized_string(author[:fullname], lang),
220
- # initial: [localized_string(author[:initials], lang)].compact,
221
- # surname: localized_string(author[:surname], lang),
222
- # )
223
- # end
224
-
225
- # @param content [String]
226
- # @param lang [String]
227
- # @return [RelatonBib::LocalizedString]
228
- # def localized_string(content, lang)
229
- # return unless content
230
-
231
- # RelatonBib::LocalizedString.new(content, lang)
232
- # end
233
-
234
- # @param postal [Nokogiri::XML::Element]
235
- # @return [Array<RelatonBib::Address, RelatonBib::Phone>]
236
- # def contacts(addr)
237
- # contacts = []
238
- # return contacts unless addr
239
-
240
- # postal = addr.at("./postal")
241
- # contacts << address(postal) if postal
242
- # add_contact(contacts, "phone", addr.at("./phone"))
243
- # add_contact(contacts, "email", addr.at("./email"))
244
- # add_contact(contacts, "uri", addr.at("./uri"))
245
- # contacts
246
- # end
247
-
248
- # @param postal [Nokogiri::XML::Element]
249
- # @rerurn [RelatonBib::Address]
250
- # def address(postal) # rubocop:disable Metrics/CyclomaticComplexity
251
- # RelatonBib::Address.new(
252
- # street: [(postal.at("./postalLine") || postal.at("./street"))&.text],
253
- # city: postal.at("./city")&.text,
254
- # postcode: postal.at("./code")&.text,
255
- # country: postal.at("./country")&.text,
256
- # state: postal.at("./region")&.text,
257
- # )
258
- # end
259
-
260
- # @param type [String] allowed "phone", "email" or "uri"
261
- # @param value [String]
262
- # def add_contact(contacts, type, value)
263
- # return unless value
264
-
265
- # contacts << RelatonBib::Contact.new(type: type, value: value.text)
266
- # end
267
-
268
- # @param author [Nokogiri::XML::Element]
269
- # @return [RelatonBib::Affiliation]
270
- # def affiliation(author)
271
- # organization = author.at("./organization")
272
- # org = if organization.nil? || organization&.text&.empty?
273
- # new_org
274
- # else
275
- # new_org organization.text, organization[:abbrev]
276
- # end
277
- # RelatonBib::Affiliation.new organization: org
278
- # end
279
-
280
- # @param name [String]
281
- # @param abbr [String]
282
- # @return [RelatonBib::Organization]
283
- # def new_org(name = "Internet Engineering Task Force", abbr = "IETF")
284
- # RelatonBib::Organization.new name: name, abbreviation: abbr
285
- # end
286
-
287
- # @param author [Nokogiri::XML::Document]
288
- # @return [Hash]
289
- # def contributor_role(author)
290
- # { type: author[:role] || "author" }
291
- # end
292
-
293
- # def month(mon)
294
- # return 1 if !mon || mon.empty?
295
- # return mon if /^\d+$/.match? mon
296
-
297
- # Date::MONTHNAMES.index(mon)
298
- # end
299
-
300
- #
301
- # Extract date from reference.
302
- #
303
- # @param reference [Nokogiri::XML::Element]
304
- # @return [Array<RelatonBib::BibliographicDate>] published data.
305
- #
306
- # def dates(reference)
307
- # return unless (date = reference.at "./front/date")
308
-
309
- # d = [date[:year], month(date[:month]),
310
- # (date[:day] || 1)].compact.join "-"
311
- # date = Time.parse(d).strftime "%Y-%m-%d"
312
- # [RelatonBib::BibliographicDate.new(type: "published", on: date)]
313
- # end
314
-
315
- #
316
- # Extract document identifiers from reference
317
- #
318
- # @param reference [Nokogiri::XML::Element]
319
- # @param ver [String, NilClass] Internet Draft version
320
- #
321
- # @return [Array<RelatonBib::DocumentIdentifier>]
322
- #
323
- # def docids(reference, ver) # rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize
324
- # id = (reference[:anchor] || reference[:docName] || reference[:number])
325
- # ret = []
326
- # if id
327
- # ret << RelatonBib::DocumentIdentifier.new(
328
- # type: "IETF", id: id.sub(/^(RFC)/, "\\1 "),
329
- # )
330
- # end
331
- # if (id = reference[:anchor])
332
- # ret << RelatonBib::DocumentIdentifier.new(type: "rfc-anchor", id: id)
333
- # end
334
- # names = ["DOI", "Internet-Draft"]
335
- # ret + reference.xpath("./seriesInfo").map do |si|
336
- # next unless names.include? si[:name]
337
-
338
- # id = si[:value]
339
- # id.sub!(/(?<=-)\d{2}$/, ver) if ver && si[:name] == "Internet-Draft"
340
- # RelatonBib::DocumentIdentifier.new(id: id, type: si[:name])
341
- # end.compact
342
- # end
343
-
344
- #
345
- # Extract series form reference
346
- # @param reference [Nokogiri::XML::Element]
347
- #
348
- # @return [Array<RelatonBib::Series>]
349
- #
350
- # def series(reference)
351
- # reference.xpath("./seriesInfo").map do |si|
352
- # next if si[:name] == "DOI" || si[:stream] || si[:status]
353
-
354
- # RelatonBib::Series.new(
355
- # title: RelatonBib::TypedTitleString.new(
356
- # content: si[:name], language: language(reference), script: "Latn",
357
- # ),
358
- # number: si[:value],
359
- # type: "main",
360
- # )
361
- # end.compact
362
- # end
363
-
364
- #
365
- # extract status
366
- # @param reference [Nokogiri::XML::Element]
367
- #
368
- # @return [RelatonBib::DocumentStatus]
369
- #
370
- # def status(reference)
371
- # st = reference.at("./seriesinfo[@status]")
372
- # return unless st
373
-
374
- # RelatonBib::DocumentStatus.new(stage: st[:status])
375
- # end
376
52
  end
377
53
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonIetf
2
- VERSION = "1.9.4".freeze
2
+ VERSION = "1.9.8".freeze
3
3
  end
data/lib/relaton_ietf.rb CHANGED
@@ -1,6 +1,9 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "net/http"
4
+ require "relaton_bib"
3
5
  require "relaton_ietf/version"
6
+ require "relaton_ietf/bibxml_parser"
4
7
  require "relaton_ietf/ietf_bibliography"
5
8
  require "relaton_ietf/ietf_bibliographic_item"
6
9
  require "relaton_ietf/xml_parser"
data/relaton_ietf.gemspec CHANGED
@@ -38,6 +38,6 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "vcr"
39
39
  spec.add_development_dependency "webmock"
40
40
 
41
- spec.add_dependency "relaton-bib", ">= 1.9.8"
41
+ spec.add_dependency "relaton-bib", ">= 1.9.12"
42
42
  spec.add_dependency "zlib", "~> 1.1.0"
43
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-ietf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.9.4
4
+ version: 1.9.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-12-23 00:00:00.000000000 Z
11
+ date: 2021-12-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: equivalent-xml
@@ -128,14 +128,14 @@ dependencies:
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 1.9.8
131
+ version: 1.9.12
132
132
  type: :runtime
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - ">="
137
137
  - !ruby/object:Gem::Version
138
- version: 1.9.8
138
+ version: 1.9.12
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: zlib
141
141
  requirement: !ruby/object:Gem::Requirement
@@ -177,6 +177,7 @@ files:
177
177
  - grammars/reqt.rng
178
178
  - lib/relaton/provider_ietf.rb
179
179
  - lib/relaton_ietf.rb
180
+ - lib/relaton_ietf/bibxml_parser.rb
180
181
  - lib/relaton_ietf/committee.rb
181
182
  - lib/relaton_ietf/data_fetcher.rb
182
183
  - lib/relaton_ietf/hash_converter.rb