relaton-ietf 1.5.0 → 1.7.2
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 +4 -4
- data/.github/workflows/macos.yml +2 -0
- data/grammars/isodoc.rng +14 -43
- data/lib/relaton_ietf.rb +1 -6
- data/lib/relaton_ietf/hash_converter.rb +8 -17
- data/lib/relaton_ietf/scrapper.rb +65 -96
- data/lib/relaton_ietf/version.rb +1 -1
- data/relaton_ietf.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fe0909b3d346a37c7e6363a2c1b4c2822464b1b8bcaa589e3b9efad9148b24a8
|
4
|
+
data.tar.gz: b1a22b2905d52f0f014a27ea7eb11abe049ec62c2e6918818c6ca5cf3e2af843
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 151fddd3a5168eb80b1fcd0f86a33f58ab222993457c2c1eb8b24a03ccf976b4048b01e7a7ff182957c846a258fe77602114f2de394b285b6291e16baca2cd35
|
7
|
+
data.tar.gz: '08ed81561c2737cc7852c868990064e4bf23bfd270c24f55ecb6948b6b97e7bcff09274baebab5d4003797c0babc1fc1c4dfabbd19e72cfd33e73f05533b4e13'
|
data/.github/workflows/macos.yml
CHANGED
@@ -26,6 +26,8 @@ jobs:
|
|
26
26
|
- name: Update gems
|
27
27
|
run: |
|
28
28
|
sudo gem install bundler --force
|
29
|
+
ruby -v | grep 2.5 && bundle config set build.debase --with-cflags="-Wno-error=implicit-function-declaration"
|
30
|
+
ruby -v | grep 2.5 && bundle config set build.ruby-debug-ide --with-cflags="-Wno-error=implicit-function-declaration"
|
29
31
|
bundle install --jobs 4 --retry 3
|
30
32
|
- name: Run specs
|
31
33
|
run: |
|
data/grammars/isodoc.rng
CHANGED
@@ -24,6 +24,14 @@
|
|
24
24
|
<start>
|
25
25
|
<ref name="standard-document"/>
|
26
26
|
</start>
|
27
|
+
<define name="doctype">
|
28
|
+
<element name="doctype">
|
29
|
+
<optional>
|
30
|
+
<attribute name="abbreviation"/>
|
31
|
+
</optional>
|
32
|
+
<ref name="DocumentType"/>
|
33
|
+
</element>
|
34
|
+
</define>
|
27
35
|
<define name="hyperlink">
|
28
36
|
<element name="link">
|
29
37
|
<attribute name="target">
|
@@ -141,6 +149,11 @@
|
|
141
149
|
<data type="boolean"/>
|
142
150
|
</attribute>
|
143
151
|
</optional>
|
152
|
+
<optional>
|
153
|
+
<attribute name="key">
|
154
|
+
<data type="boolean"/>
|
155
|
+
</attribute>
|
156
|
+
</optional>
|
144
157
|
<oneOrMore>
|
145
158
|
<ref name="dt"/>
|
146
159
|
<ref name="dd"/>
|
@@ -1164,49 +1177,7 @@
|
|
1164
1177
|
</define>
|
1165
1178
|
<define name="annex">
|
1166
1179
|
<element name="annex">
|
1167
|
-
<
|
1168
|
-
<attribute name="id">
|
1169
|
-
<data type="ID"/>
|
1170
|
-
</attribute>
|
1171
|
-
</optional>
|
1172
|
-
<optional>
|
1173
|
-
<attribute name="language"/>
|
1174
|
-
</optional>
|
1175
|
-
<optional>
|
1176
|
-
<attribute name="script"/>
|
1177
|
-
</optional>
|
1178
|
-
<optional>
|
1179
|
-
<attribute name="inline-header">
|
1180
|
-
<data type="boolean"/>
|
1181
|
-
</attribute>
|
1182
|
-
</optional>
|
1183
|
-
<attribute name="obligation">
|
1184
|
-
<choice>
|
1185
|
-
<value>normative</value>
|
1186
|
-
<value>informative</value>
|
1187
|
-
</choice>
|
1188
|
-
</attribute>
|
1189
|
-
<optional>
|
1190
|
-
<ref name="section-title"/>
|
1191
|
-
</optional>
|
1192
|
-
<group>
|
1193
|
-
<group>
|
1194
|
-
<zeroOrMore>
|
1195
|
-
<ref name="BasicBlock"/>
|
1196
|
-
</zeroOrMore>
|
1197
|
-
<zeroOrMore>
|
1198
|
-
<ref name="note"/>
|
1199
|
-
</zeroOrMore>
|
1200
|
-
</group>
|
1201
|
-
<zeroOrMore>
|
1202
|
-
<choice>
|
1203
|
-
<ref name="annex-subsection"/>
|
1204
|
-
<ref name="terms"/>
|
1205
|
-
<ref name="definitions"/>
|
1206
|
-
<ref name="references"/>
|
1207
|
-
</choice>
|
1208
|
-
</zeroOrMore>
|
1209
|
-
</group>
|
1180
|
+
<ref name="Annex-Section"/>
|
1210
1181
|
</element>
|
1211
1182
|
</define>
|
1212
1183
|
<define name="terms">
|
data/lib/relaton_ietf.rb
CHANGED
@@ -6,11 +6,6 @@ require "relaton_ietf/ietf_bibliographic_item"
|
|
6
6
|
require "relaton_ietf/xml_parser"
|
7
7
|
require "relaton_ietf/hash_converter"
|
8
8
|
|
9
|
-
# if defined? Relaton
|
10
|
-
# require_relative "relaton_ietf/processor"
|
11
|
-
# Relaton::Registry.instance.register(RelatonIetf::Processor)
|
12
|
-
# end
|
13
|
-
|
14
9
|
require "relaton/provider_ietf"
|
15
10
|
|
16
11
|
module RelatonIetf
|
@@ -22,4 +17,4 @@ module RelatonIetf
|
|
22
17
|
grammars = Dir[grammars_path].sort.map { |gp| File.read gp }.join
|
23
18
|
Digest::MD5.hexdigest grammars
|
24
19
|
end
|
25
|
-
end
|
20
|
+
end
|
@@ -1,23 +1,14 @@
|
|
1
1
|
module RelatonIetf
|
2
2
|
class HashConverter < RelatonBib::HashConverter
|
3
3
|
class << self
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
# @
|
8
|
-
#
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
# doctype_hash_to_bib(ret)
|
13
|
-
# ret
|
14
|
-
# end
|
15
|
-
|
16
|
-
# private
|
17
|
-
|
18
|
-
# def doctype_hash_to_bib(ret)
|
19
|
-
# ret
|
20
|
-
# end
|
4
|
+
#
|
5
|
+
# Ovverides superclass's method
|
6
|
+
#
|
7
|
+
# @param item [Hash]
|
8
|
+
# @retirn [RelatonIec::IecBibliographicItem]
|
9
|
+
def bib_item(item)
|
10
|
+
IetfBibliographicItem.new(item)
|
11
|
+
end
|
21
12
|
end
|
22
13
|
end
|
23
14
|
end
|
@@ -10,44 +10,31 @@ module RelatonIetf
|
|
10
10
|
|
11
11
|
# Scrapper module
|
12
12
|
module Scrapper
|
13
|
-
|
14
|
-
# ID_URI_PATTERN = "https://xml2rfc.tools.ietf.org/public/rfc/bibxml-ids/reference.CODE"
|
13
|
+
GH_URL = "https://raw.githubusercontent.com/relaton/relaton-data-ietf/master/data/reference."
|
15
14
|
BCP_URI_PATTERN = "https://www.rfc-editor.org/info/CODE"
|
16
15
|
|
17
16
|
class << self
|
18
|
-
# rubocop:disable Metrics/MethodLength
|
19
|
-
|
20
17
|
# @param text [String]
|
21
18
|
# @param is_relation [TrueClass, FalseClass]
|
22
19
|
# @return [RelatonIetf::IetfBibliographicItem]
|
23
20
|
def scrape_page(text, is_relation = false)
|
24
21
|
# Remove initial "IETF " string if specified
|
25
22
|
ref = text.gsub(/^IETF /, "")
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
when /^I-D/ then rfc_item ["3"], ref, is_relation
|
30
|
-
when /^W3C/ then rfc_item ["4", "2"], ref, is_relation
|
31
|
-
when /^(ANSI|CCITT|FIPS|IANA|ISO|ITU|NIST|OASIS|PKCS)/
|
32
|
-
rfc_item ["2"], ref, is_relation
|
33
|
-
when /^(3GPP|SDO-3GPP)/ then rfc_item ["5"], ref, is_relation
|
34
|
-
when /^IEEE/ then rfc_item ["6", "2"], ref, is_relation
|
35
|
-
when /^BCP/ then bcp_item BCP_URI_PATTERN.dup, ref
|
36
|
-
else
|
37
|
-
raise RelatonBib::RequestError, "#{ref}: not recognised for RFC"
|
38
|
-
end
|
23
|
+
/^(RFC|BCP|FYI|STD)\s(?<num>\d+)/ =~ ref
|
24
|
+
ref.sub! /(?<=^(?:RFC|BCP|FYI|STD)\s)(\d+)/, num.rjust(4, "0") if num
|
25
|
+
rfc_item ref, is_relation
|
39
26
|
rescue Timeout::Error, Errno::EINVAL, Errno::ECONNRESET, EOFError,
|
40
27
|
Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
|
41
28
|
Net::ProtocolError, SocketError
|
42
29
|
raise RelatonBib::RequestError, "No document found for #{ref} reference."
|
43
30
|
end
|
44
31
|
|
45
|
-
# @param reference [
|
32
|
+
# @param reference [Nokogiri::XML::Element, nil]
|
46
33
|
# @param is_relation [TrueClass, FalseClass]
|
47
34
|
# @param url [String, NilClass]
|
48
35
|
# @param ver [String, NilClass] Internet Draft version
|
49
36
|
# @return [RelatonIetf::IetfBibliographicItem]
|
50
|
-
def fetch_rfc(reference, is_relation = false, url = nil, ver = nil)
|
37
|
+
def fetch_rfc(reference, is_relation = false, url = nil, ver = nil) # rubocop:disable Metrics/AbcSize,Metrics/MethodLength
|
51
38
|
return unless reference
|
52
39
|
|
53
40
|
ietf_item(
|
@@ -59,23 +46,24 @@ module RelatonIetf
|
|
59
46
|
language: [language(reference)],
|
60
47
|
link: link(reference, url, ver),
|
61
48
|
title: titles(reference),
|
49
|
+
formattedref: formattedref(reference),
|
62
50
|
abstract: abstracts(reference),
|
63
51
|
contributor: contributors(reference),
|
52
|
+
relation: relations(reference),
|
64
53
|
date: dates(reference),
|
65
54
|
series: series(reference),
|
66
55
|
place: ["Fremont, CA"],
|
67
56
|
keyword: reference.xpath("front/keyword").map(&:text),
|
68
|
-
doctype: doctype(reference[:anchor])
|
57
|
+
doctype: doctype(reference[:anchor])
|
69
58
|
)
|
70
59
|
end
|
71
|
-
# rubocop:enable Metrics/MethodLength
|
72
60
|
|
73
61
|
private
|
74
62
|
|
75
63
|
# @param anchor [String]
|
76
64
|
# @return [String]
|
77
65
|
def doctype(anchor)
|
78
|
-
anchor
|
66
|
+
anchor&.include?("I-D") ? "internet-draft" : "rfc"
|
79
67
|
end
|
80
68
|
|
81
69
|
# @param reference [Nokogiri::XML::Element]
|
@@ -86,7 +74,7 @@ module RelatonIetf
|
|
86
74
|
l = []
|
87
75
|
l << { type: "xml", content: url } if url
|
88
76
|
l << { type: "src", content: reference[:target] } if reference[:target]
|
89
|
-
if reference[:anchor]
|
77
|
+
if /^I-D/.match? reference[:anchor]
|
90
78
|
reference.xpath("format").each do |f|
|
91
79
|
c = ver ? f[:target].sub(/(?<=-)\d{2}(?=\.)/, ver) : f[:target]
|
92
80
|
l << { type: f[:type], content: c }
|
@@ -103,57 +91,30 @@ module RelatonIetf
|
|
103
91
|
RelatonIetf::IetfBibliographicItem.new **attrs
|
104
92
|
end
|
105
93
|
|
106
|
-
# @param uri_nums [Array<String>]
|
107
94
|
# @param ref [String]
|
108
95
|
# @return [RelatonIetf::IetfBibliographicItem]
|
109
|
-
def rfc_item(
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
/(
|
114
|
-
if n == "3"
|
115
|
-
ref.sub! /-\d{2}/, "" if ver
|
116
|
-
ref.sub! /(?<=I-D\.)draft-/, ""
|
117
|
-
end
|
118
|
-
|
119
|
-
uri = "#{RFC_URI_PATTERN}#{n}/reference.#{ref.sub(/\s|\u00a0/, ".")}.xml"
|
120
|
-
begin
|
121
|
-
doc = Nokogiri::XML get_page(uri)
|
122
|
-
resp = fetch_rfc doc.at("//reference"), is_relation, uri, ver
|
123
|
-
return resp if resp
|
124
|
-
rescue RelatonBib::RequestError => e
|
125
|
-
error = e
|
126
|
-
end
|
96
|
+
def rfc_item(ref, is_relation)
|
97
|
+
/(?<=-)(?<ver>\d{2})$/ =~ ref
|
98
|
+
if /^I-D/.match? ref
|
99
|
+
ref.sub! /-\d{2}/, "" if ver
|
100
|
+
ref.sub! /(?<=I-D\.)draft-/, ""
|
127
101
|
end
|
128
|
-
raise error
|
129
|
-
end
|
130
102
|
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
def bcp_item(uri_template, reference)
|
135
|
-
uri = uri_template.sub "CODE", reference.sub(" ", "").downcase
|
136
|
-
doc = Nokogiri::HTML get_page(uri)
|
137
|
-
ietf_item(
|
138
|
-
id: reference,
|
139
|
-
title: [content: ""],
|
140
|
-
docid: [RelatonBib::DocumentIdentifier.new(type: "IETF", id: reference)],
|
141
|
-
language: ["en"],
|
142
|
-
link: [{ type: "src", content: uri }],
|
143
|
-
relation: fetch_relations(doc),
|
144
|
-
doctype: "rfc",
|
145
|
-
)
|
103
|
+
uri = "#{GH_URL}#{ref.sub(/\s|\u00a0/, '.')}.xml"
|
104
|
+
doc = Nokogiri::XML get_page(uri)
|
105
|
+
fetch_rfc doc.at("/referencegroup", "/reference"), is_relation, uri, ver
|
146
106
|
end
|
147
107
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
)
|
108
|
+
# @param reference [Nokogiri::XML::Element]
|
109
|
+
# @return [Hash]
|
110
|
+
def relations(reference)
|
111
|
+
reference.xpath("reference").map do |ref|
|
112
|
+
{ type: "includes", bibitem: fetch_rfc(ref, true) }
|
154
113
|
end
|
155
114
|
end
|
156
115
|
|
116
|
+
# @param uri [String]
|
117
|
+
# @return [String] HTTP response body
|
157
118
|
def get_page(uri)
|
158
119
|
res = Net::HTTP.get_response(URI(uri))
|
159
120
|
if res.code != "200"
|
@@ -163,21 +124,30 @@ module RelatonIetf
|
|
163
124
|
res.body
|
164
125
|
end
|
165
126
|
|
166
|
-
#
|
167
|
-
# uri_template.gsub("CODE", reference)
|
168
|
-
# end
|
169
|
-
|
127
|
+
# @param reference [Nokogiri::XML::Element]
|
170
128
|
# @return [String]
|
171
129
|
def language(reference)
|
172
130
|
reference[:lang] || "en"
|
173
131
|
end
|
174
132
|
|
133
|
+
# @param reference [Nokogiri::XML::Element]
|
175
134
|
# @return [Array<Hash>]
|
176
135
|
def titles(reference)
|
177
|
-
|
178
|
-
|
136
|
+
reference.xpath("./front/title").map do |title|
|
137
|
+
{ content: title.text, language: language(reference), script: "Latn" }
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
141
|
+
# @param reference [Nokogiri::XML::Element]
|
142
|
+
# @return [RelatonBib::FormattedRef, nil]
|
143
|
+
def formattedref(reference)
|
144
|
+
return if reference.at "./fornt/title"
|
145
|
+
|
146
|
+
cont = (reference[:anchor] || reference[:docName] || reference[:number])
|
147
|
+
RelatonBib::FormattedRef.new content: cont, language: language(reference), script: "Latn" if cont
|
179
148
|
end
|
180
149
|
|
150
|
+
# @param reference [Nokogiri::XML::Element]
|
181
151
|
# @return [Array<RelatonBib::FormattedString>]
|
182
152
|
def abstracts(ref)
|
183
153
|
ref.xpath("./front/abstract").map do |a|
|
@@ -188,24 +158,27 @@ module RelatonIetf
|
|
188
158
|
end
|
189
159
|
end
|
190
160
|
|
161
|
+
# @param reference [Nokogiri::XML::Element]
|
191
162
|
# @return [Array<Hash>]
|
192
163
|
def contributors(reference)
|
193
164
|
persons(reference) + organizations(reference)
|
194
165
|
end
|
195
166
|
|
167
|
+
# @param reference [Nokogiri::XML::Element]
|
196
168
|
# @return [Array<Hash{Symbol=>RelatonBib::Person,Symbol=>Array<String>}>]
|
197
169
|
def persons(reference)
|
198
|
-
reference.xpath("./front/author[@surname]|./front/author[@fullname]")
|
199
|
-
map do |author|
|
170
|
+
reference.xpath("./front/author[@surname]|./front/author[@fullname]")
|
171
|
+
.map do |author|
|
200
172
|
entity = RelatonBib::Person.new(
|
201
173
|
name: full_name(author, reference),
|
202
174
|
affiliation: [affiliation(author)],
|
203
|
-
contact: contacts(author.at("./address"))
|
175
|
+
contact: contacts(author.at("./address"))
|
204
176
|
)
|
205
177
|
{ entity: entity, role: [contributor_role(author)] }
|
206
178
|
end
|
207
179
|
end
|
208
180
|
|
181
|
+
# @param reference [Nokogiri::XML::Element]
|
209
182
|
# @return [Array<Hash{Symbol=>RelatonBib::Organization,Symbol=>Array<String>}>]
|
210
183
|
def organizations(reference)
|
211
184
|
publisher = { entity: new_org, role: [type: "publisher"] }
|
@@ -215,21 +188,21 @@ module RelatonIetf
|
|
215
188
|
mem << { entity: new_org(si[:stream], nil), role: [type: "author"] }
|
216
189
|
end
|
217
190
|
orgs + reference.xpath(
|
218
|
-
"front/author[not(@surname)][not(@fullname)]/organization"
|
191
|
+
"front/author[not(@surname)][not(@fullname)]/organization"
|
219
192
|
).map do |org|
|
220
193
|
{ entity: new_org(org.text, nil), role: [type: "author"] }
|
221
194
|
end
|
222
195
|
end
|
223
196
|
|
224
|
-
# @param author [Nokogiri::XML::
|
225
|
-
# @param ref [Nokogiri::XML::
|
197
|
+
# @param author [Nokogiri::XML::Element]
|
198
|
+
# @param ref [Nokogiri::XML::Element]
|
226
199
|
# @return [RelatonBib::FullName]
|
227
200
|
def full_name(author, ref)
|
228
201
|
lang = language ref
|
229
202
|
RelatonBib::FullName.new(
|
230
203
|
completename: localized_string(author[:fullname], lang),
|
231
204
|
initial: [localized_string(author[:initials], lang)].compact,
|
232
|
-
surname: localized_string(author[:surname], lang)
|
205
|
+
surname: localized_string(author[:surname], lang)
|
233
206
|
)
|
234
207
|
end
|
235
208
|
|
@@ -242,7 +215,7 @@ module RelatonIetf
|
|
242
215
|
RelatonBib::LocalizedString.new(content, lang)
|
243
216
|
end
|
244
217
|
|
245
|
-
# @param postal [Nokogiri::XML::
|
218
|
+
# @param postal [Nokogiri::XML::Element]
|
246
219
|
# @return [Array<RelatonBib::Address, RelatonBib::Phone>]
|
247
220
|
def contacts(addr)
|
248
221
|
contacts = []
|
@@ -256,15 +229,15 @@ module RelatonIetf
|
|
256
229
|
contacts
|
257
230
|
end
|
258
231
|
|
259
|
-
# @param postal [Nokogiri::XML::
|
232
|
+
# @param postal [Nokogiri::XML::Element]
|
260
233
|
# @rerurn [RelatonBib::Address]
|
261
|
-
def address(postal)
|
234
|
+
def address(postal) # rubocop:disable Metrics/CyclomaticComplexity
|
262
235
|
RelatonBib::Address.new(
|
263
236
|
street: [(postal.at("./postalLine") || postal.at("./street"))&.text],
|
264
237
|
city: postal.at("./city")&.text,
|
265
238
|
postcode: postal.at("./code")&.text,
|
266
239
|
country: postal.at("./country")&.text,
|
267
|
-
state: postal.at("./region")&.text
|
240
|
+
state: postal.at("./region")&.text
|
268
241
|
)
|
269
242
|
end
|
270
243
|
|
@@ -276,7 +249,7 @@ module RelatonIetf
|
|
276
249
|
contacts << RelatonBib::Contact.new(type: type, value: value.text)
|
277
250
|
end
|
278
251
|
|
279
|
-
# @param author [Nokogiri::XML::
|
252
|
+
# @param author [Nokogiri::XML::Element]
|
280
253
|
# @return [RelatonBib::Affiliation]
|
281
254
|
def affiliation(author)
|
282
255
|
organization = author.at("./organization")
|
@@ -303,7 +276,7 @@ module RelatonIetf
|
|
303
276
|
|
304
277
|
def month(mon)
|
305
278
|
return 1 if !mon || mon.empty?
|
306
|
-
return mon if /^\d
|
279
|
+
return mon if /^\d+$/.match? mon
|
307
280
|
|
308
281
|
Date::MONTHNAMES.index(mon)
|
309
282
|
end
|
@@ -311,6 +284,7 @@ module RelatonIetf
|
|
311
284
|
#
|
312
285
|
# Extract date from reference.
|
313
286
|
#
|
287
|
+
# @param reference [Nokogiri::XML::Element]
|
314
288
|
# @return [Array<RelatonBib::BibliographicDate>] published data.
|
315
289
|
#
|
316
290
|
def dates(reference)
|
@@ -322,8 +296,6 @@ module RelatonIetf
|
|
322
296
|
[RelatonBib::BibliographicDate.new(type: "published", on: date)]
|
323
297
|
end
|
324
298
|
|
325
|
-
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
326
|
-
|
327
299
|
#
|
328
300
|
# Extract document identifiers from reference
|
329
301
|
#
|
@@ -332,12 +304,12 @@ module RelatonIetf
|
|
332
304
|
#
|
333
305
|
# @return [Array<RelatonBib::DocumentIdentifier>]
|
334
306
|
#
|
335
|
-
def docids(reference, ver)
|
307
|
+
def docids(reference, ver) # rubocop:disable Metrics/MethodLength,Metrics/CyclomaticComplexity,Metrics/PerceivedComplexity,Metrics/AbcSize
|
336
308
|
id = (reference[:anchor] || reference[:docName] || reference[:number])
|
337
309
|
ret = []
|
338
310
|
if id
|
339
311
|
ret << RelatonBib::DocumentIdentifier.new(
|
340
|
-
type: "IETF", id: id.sub(/^(RFC)/, "\\1 ")
|
312
|
+
type: "IETF", id: id.sub(/^(RFC)/, "\\1 ")
|
341
313
|
)
|
342
314
|
end
|
343
315
|
if (id = reference[:anchor])
|
@@ -351,11 +323,10 @@ module RelatonIetf
|
|
351
323
|
RelatonBib::DocumentIdentifier.new(id: id, type: si[:name])
|
352
324
|
end.compact
|
353
325
|
end
|
354
|
-
# enable Metrics/MethodLength, Metrics/AbcSize
|
355
326
|
|
356
327
|
#
|
357
328
|
# Extract series form reference
|
358
|
-
# @param reference [Nokogiri::XML::
|
329
|
+
# @param reference [Nokogiri::XML::Element]
|
359
330
|
#
|
360
331
|
# @return [Array<RelatonBib::Series>]
|
361
332
|
#
|
@@ -365,17 +336,17 @@ module RelatonIetf
|
|
365
336
|
|
366
337
|
RelatonBib::Series.new(
|
367
338
|
title: RelatonBib::TypedTitleString.new(
|
368
|
-
content: si[:name], language: language(reference), script: "Latn"
|
339
|
+
content: si[:name], language: language(reference), script: "Latn"
|
369
340
|
),
|
370
341
|
number: si[:value],
|
371
|
-
type: "main"
|
342
|
+
type: "main"
|
372
343
|
)
|
373
344
|
end.compact
|
374
345
|
end
|
375
346
|
|
376
347
|
#
|
377
348
|
# extract status
|
378
|
-
# @param reference [Nokogiri::XML::
|
349
|
+
# @param reference [Nokogiri::XML::Element]
|
379
350
|
#
|
380
351
|
# @return [RelatonBib::DocumentStatus]
|
381
352
|
#
|
@@ -383,9 +354,7 @@ module RelatonIetf
|
|
383
354
|
st = reference.at("./seriesinfo[@status]")
|
384
355
|
return unless st
|
385
356
|
|
386
|
-
RelatonBib::DocumentStatus.new(
|
387
|
-
stage: st[:status],
|
388
|
-
)
|
357
|
+
RelatonBib::DocumentStatus.new(stage: st[:status])
|
389
358
|
end
|
390
359
|
end
|
391
360
|
end
|
data/lib/relaton_ietf/version.rb
CHANGED
data/relaton_ietf.gemspec
CHANGED
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.
|
4
|
+
version: 1.7.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-02-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -156,14 +156,14 @@ dependencies:
|
|
156
156
|
requirements:
|
157
157
|
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.
|
159
|
+
version: 1.7.0
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
164
|
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
|
-
version: 1.
|
166
|
+
version: 1.7.0
|
167
167
|
description: "RelatonIetf: retrieve IETF Standards for bibliographic use \nusing the
|
168
168
|
BibliographicItem model.\n\nFormerly known as rfcbib.\n"
|
169
169
|
email:
|