relaton-nist 1.0.2 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/grammars/biblio.rng +35 -5
- data/grammars/isodoc.rng +17 -1
- data/grammars/isostandard.rng +9 -1
- data/lib/relaton_nist/scrapper.rb +18 -6
- data/lib/relaton_nist/version.rb +1 -1
- data/relaton_nist.gemspec +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8ec7538ac2ee5dc9e864f3953e6bd28eed9997a24dcd78984cea6eb62ee02033
|
4
|
+
data.tar.gz: aa9ba4e4bfb1388f04752c4e17574f6aaa052f8cfcd7cb2faefdb733249c8576
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c47176f1d352f01bbf6c7839acbf84ab9f2f9150bcf0f7c626757f62037c60ec07eb06147c72bf4d2720d5b51fc32a0ad057c0cb4af56efd525136afc240f48d
|
7
|
+
data.tar.gz: fb7604fcf82b6ddf4cf5d6ea5710dc809e7de71b2e832575aacbdce70dbc931067f3198c3f7389ba74296b38e438f856872d0afc7e73484d19f5deab20e17e84
|
data/grammars/biblio.rng
CHANGED
@@ -88,7 +88,7 @@
|
|
88
88
|
<text/>
|
89
89
|
</element>
|
90
90
|
</define>
|
91
|
-
<define name="
|
91
|
+
<define name="LocalizedString1">
|
92
92
|
<optional>
|
93
93
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
94
94
|
<attribute name="language"/>
|
@@ -98,6 +98,16 @@
|
|
98
98
|
</optional>
|
99
99
|
<text/>
|
100
100
|
</define>
|
101
|
+
<define name="LocalizedString">
|
102
|
+
<choice>
|
103
|
+
<ref name="LocalizedString1"/>
|
104
|
+
<oneOrMore>
|
105
|
+
<element name="variant">
|
106
|
+
<ref name="LocalizedString1"/>
|
107
|
+
</element>
|
108
|
+
</oneOrMore>
|
109
|
+
</choice>
|
110
|
+
</define>
|
101
111
|
<!--
|
102
112
|
Unlike UML, change type to format: type is overloaded
|
103
113
|
Would be need if plain were default value and could omit the attribute
|
@@ -121,7 +131,7 @@
|
|
121
131
|
</optional>
|
122
132
|
<ref name="LocalizedStringOrXsAny"/>
|
123
133
|
</define>
|
124
|
-
<define name="
|
134
|
+
<define name="LocalizedStringOrXsAny1">
|
125
135
|
<optional>
|
126
136
|
<!-- multiple languages and scripts possible: comma delimit them if so -->
|
127
137
|
<attribute name="language"/>
|
@@ -136,6 +146,16 @@
|
|
136
146
|
</choice>
|
137
147
|
</oneOrMore>
|
138
148
|
</define>
|
149
|
+
<define name="LocalizedStringOrXsAny">
|
150
|
+
<choice>
|
151
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
152
|
+
<oneOrMore>
|
153
|
+
<element name="variant">
|
154
|
+
<ref name="LocalizedStringOrXsAny1"/>
|
155
|
+
</element>
|
156
|
+
</oneOrMore>
|
157
|
+
</choice>
|
158
|
+
</define>
|
139
159
|
<define name="contributor">
|
140
160
|
<element name="contributor">
|
141
161
|
<zeroOrMore>
|
@@ -641,9 +661,9 @@
|
|
641
661
|
<optional>
|
642
662
|
<ref name="status"/>
|
643
663
|
</optional>
|
644
|
-
<
|
664
|
+
<zeroOrMore>
|
645
665
|
<ref name="copyright"/>
|
646
|
-
</
|
666
|
+
</zeroOrMore>
|
647
667
|
<zeroOrMore>
|
648
668
|
<ref name="docrelation"/>
|
649
669
|
</zeroOrMore>
|
@@ -1001,7 +1021,17 @@
|
|
1001
1021
|
<optional>
|
1002
1022
|
<ref name="to"/>
|
1003
1023
|
</optional>
|
1004
|
-
<
|
1024
|
+
<oneOrMore>
|
1025
|
+
<ref name="owner"/>
|
1026
|
+
</oneOrMore>
|
1027
|
+
<optional>
|
1028
|
+
<ref name="copyright_scope"/>
|
1029
|
+
</optional>
|
1030
|
+
</element>
|
1031
|
+
</define>
|
1032
|
+
<define name="copyright_scope">
|
1033
|
+
<element name="scope">
|
1034
|
+
<text/>
|
1005
1035
|
</element>
|
1006
1036
|
</define>
|
1007
1037
|
<define name="from">
|
data/grammars/isodoc.rng
CHANGED
@@ -53,6 +53,14 @@
|
|
53
53
|
<optional>
|
54
54
|
<attribute name="alt"/>
|
55
55
|
</optional>
|
56
|
+
<optional>
|
57
|
+
<attribute name="case">
|
58
|
+
<choice>
|
59
|
+
<value>capital</value>
|
60
|
+
<value>lowercase</value>
|
61
|
+
</choice>
|
62
|
+
</attribute>
|
63
|
+
</optional>
|
56
64
|
<text/>
|
57
65
|
</element>
|
58
66
|
</define>
|
@@ -902,7 +910,15 @@
|
|
902
910
|
<attribute name="id">
|
903
911
|
<data type="ID"/>
|
904
912
|
</attribute>
|
905
|
-
<
|
913
|
+
<oneOrMore>
|
914
|
+
<choice>
|
915
|
+
<ref name="paragraph"/>
|
916
|
+
<ref name="ul"/>
|
917
|
+
<ref name="ol"/>
|
918
|
+
<ref name="dl"/>
|
919
|
+
<ref name="formula"/>
|
920
|
+
</choice>
|
921
|
+
</oneOrMore>
|
906
922
|
</element>
|
907
923
|
</define>
|
908
924
|
<define name="termexample">
|
data/grammars/isostandard.rng
CHANGED
@@ -91,6 +91,12 @@
|
|
91
91
|
</define>
|
92
92
|
<define name="sections">
|
93
93
|
<element name="sections">
|
94
|
+
<zeroOrMore>
|
95
|
+
<choice>
|
96
|
+
<ref name="note"/>
|
97
|
+
<ref name="admonition"/>
|
98
|
+
</choice>
|
99
|
+
</zeroOrMore>
|
94
100
|
<ref name="clause"/>
|
95
101
|
<optional>
|
96
102
|
<choice>
|
@@ -263,6 +269,8 @@
|
|
263
269
|
<value>publicly-available-specification</value>
|
264
270
|
<value>international-workshop-agreement</value>
|
265
271
|
<value>guide</value>
|
272
|
+
<value>amendment</value>
|
273
|
+
<value>technical-corrigendum</value>
|
266
274
|
</choice>
|
267
275
|
</define>
|
268
276
|
<define name="structuredidentifier">
|
@@ -510,7 +518,7 @@
|
|
510
518
|
</attribute>
|
511
519
|
</optional>
|
512
520
|
<oneOrMore>
|
513
|
-
<ref name="
|
521
|
+
<ref name="BasicBlock"/>
|
514
522
|
</oneOrMore>
|
515
523
|
</element>
|
516
524
|
</define>
|
@@ -325,7 +325,9 @@ module RelatonNist
|
|
325
325
|
# @param doc [Nokigiri::HTML::Document]
|
326
326
|
# @return [Array<Hash>]
|
327
327
|
def fetch_abstract(doc)
|
328
|
-
abstract_content = doc.xpath(
|
328
|
+
abstract_content = doc.xpath(
|
329
|
+
'//div[contains(@class, "pub-abstract-callout")]/div[1]/p',
|
330
|
+
).text
|
329
331
|
[{
|
330
332
|
content: abstract_content,
|
331
333
|
language: "en",
|
@@ -336,7 +338,7 @@ module RelatonNist
|
|
336
338
|
|
337
339
|
# Fetch copyright.
|
338
340
|
# @param doc [Nokogiri::HTL::Document, String]
|
339
|
-
# @return [Hash]
|
341
|
+
# @return [Array<Hash>]
|
340
342
|
def fetch_copyright(doc)
|
341
343
|
name = "National Institute of Standards and Technology"
|
342
344
|
url = "www.nist.gov"
|
@@ -345,9 +347,11 @@ module RelatonNist
|
|
345
347
|
doc.at("//span[@id='pub-release-date']").text.strip
|
346
348
|
end
|
347
349
|
from = d.match(/\d{4}/).to_s
|
348
|
-
{ owner: { name: name, abbreviation: "NIST", url: url }, from: from }
|
350
|
+
[{ owner: [{ name: name, abbreviation: "NIST", url: url }], from: from }]
|
349
351
|
end
|
350
352
|
|
353
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
354
|
+
|
351
355
|
# Fetch links.
|
352
356
|
# @param doc [Nokogiri::HTML::Document, Hash]
|
353
357
|
# @return [Array<Hash>]
|
@@ -365,6 +369,7 @@ module RelatonNist
|
|
365
369
|
links << { type: "doi", content: doi } if doi
|
366
370
|
links
|
367
371
|
end
|
372
|
+
# rubocop:enable Metrics/MethodLength
|
368
373
|
|
369
374
|
# Fetch relations.
|
370
375
|
# @param doc [Nokogiri::HTML::Document]
|
@@ -382,6 +387,7 @@ module RelatonNist
|
|
382
387
|
doc_relation "updates", r.text, DOMAIN + r[:href]
|
383
388
|
end
|
384
389
|
end
|
390
|
+
# rubocop:enable Metrics/AbcSize
|
385
391
|
|
386
392
|
def fetch_relations_json(doc)
|
387
393
|
relations = doc["supersedes"].map do |r|
|
@@ -409,6 +415,8 @@ module RelatonNist
|
|
409
415
|
)
|
410
416
|
end
|
411
417
|
|
418
|
+
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
419
|
+
|
412
420
|
# @param doc [Nokogiri::HTML::Document]
|
413
421
|
# @return [Array<RelatonBib::Series>]
|
414
422
|
def fetch_series(doc)
|
@@ -418,14 +426,14 @@ module RelatonNist
|
|
418
426
|
next if s.name == "span"
|
419
427
|
|
420
428
|
iter = if idx.zero? then "I"
|
421
|
-
# elsif status == "final" && idx == (series.size - 1) then "F"
|
422
429
|
else idx + 1
|
423
430
|
end
|
424
431
|
|
425
432
|
content = s.text.match(/^[^\(]+/).to_s.strip.squeeze " "
|
426
433
|
|
427
434
|
ref = case s.text
|
428
|
-
when /^Draft/
|
435
|
+
when /^Draft/
|
436
|
+
content.match(/(?<=Draft\s).+/).to_s + " (#{iter}PD)"
|
429
437
|
when /\(Draft\)/ then content + " (#{iter}PD)"
|
430
438
|
else content
|
431
439
|
end
|
@@ -436,6 +444,7 @@ module RelatonNist
|
|
436
444
|
RelatonBib::Series.new(formattedref: fref)
|
437
445
|
end.select { |s| s }
|
438
446
|
end
|
447
|
+
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
439
448
|
|
440
449
|
# @param doc [Nokogiri::HTML::Document, Hash]
|
441
450
|
# @return [Array<RelatonNist::Keyword>]
|
@@ -448,6 +457,7 @@ module RelatonNist
|
|
448
457
|
kws.map { |kw| kw.is_a?(String) ? kw : kw.text }
|
449
458
|
end
|
450
459
|
|
460
|
+
# rubocop:disable Metrics/AbcSize
|
451
461
|
# @param doc [Nokogiri::HTML::Document]
|
452
462
|
# @return [RelatonNist::CommentPeriod, NilClass]
|
453
463
|
def fetch_commentperiod(doc)
|
@@ -459,11 +469,13 @@ module RelatonNist
|
|
459
469
|
d = doc.at("//span[@id='pub-release-date']").text.strip
|
460
470
|
from = Date.strptime(d, "%B %Y").to_s
|
461
471
|
|
462
|
-
ex = doc.at "//strong[contains(.,'The comment closing date has been
|
472
|
+
ex = doc.at "//strong[contains(.,'The comment closing date has been "\
|
473
|
+
"extended to')]"
|
463
474
|
ext = ex&.text&.match(/\w+\s\d{2},\s\d{4}/).to_s
|
464
475
|
extended = ext.empty? ? nil : Date.strptime(ext, "%B %d, %Y")
|
465
476
|
CommentPeriod.new from: from, to: to, extended: extended
|
466
477
|
end
|
478
|
+
# rubocop:enable Metrics/AbcSize
|
467
479
|
|
468
480
|
# @param json [Hash]
|
469
481
|
# @return [RelatonNist::CommentPeriod, NilClass]
|
data/lib/relaton_nist/version.rb
CHANGED
data/relaton_nist.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-nist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
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-
|
11
|
+
date: 2020-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: debase
|
@@ -154,16 +154,16 @@ dependencies:
|
|
154
154
|
name: relaton-bib
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - "
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
|
-
version: 1.0
|
159
|
+
version: 1.1.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.0
|
166
|
+
version: 1.1.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: rubyzip
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|