relaton-nist 1.2.0 → 1.4.0

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: c27ee448a739133b46c5b46073a5370b8407ff9389deab931df5a450586a2694
4
- data.tar.gz: 6a53926d3e09a53e53d37de7b45c62b72111c85e30d9cc1cf4d97a838d7c4980
3
+ metadata.gz: a3697bb0d3737e3f29c9b68d2395013762ed2d5b56b8003325f495f67f670532
4
+ data.tar.gz: 8e41e1180ea1fb3403546eb5493df7a7588b5fff934a453f33d9f60ed1730a7f
5
5
  SHA512:
6
- metadata.gz: a12935d087796f27121b84bc8d78bae367533da85e89487643f13bb4cffbd81c1dc104f6f05f4f77298b7a8940b82ca5e237e17522541bd1bbfd48449257ca64
7
- data.tar.gz: a602a206c6d2dcdcade816ef4596c4c374984b5b2eb8a45fce161102d31709706c33b7c783b7f2eb3be0bdeff183356ce484ad4c7d5e154f7b7db9673a8ad5c4
6
+ metadata.gz: 42c02c151388863e207012f6cc2dae9fc796ef18abf5f6ebf73f9683b0e7322f35bde10471fe357515593c492db136a0b9514103fdb127fb53096b75c6197eea
7
+ data.tar.gz: d085edddc926b57e6e8613886c661e7296e23ab121861fe880e61044d0d25c1dd3ca9474da89356aa3861b5426a749d3f737ad8b4d20c95c5839d9ea284da85b
@@ -29,4 +29,5 @@ jobs:
29
29
  bundle install --jobs 4 --retry 3
30
30
  - name: Run specs
31
31
  run: |
32
+ unset JAVA_TOOL_OPTIONS
32
33
  bundle exec rake
@@ -5,6 +5,6 @@
5
5
  inherit_from:
6
6
  - https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml
7
7
  AllCops:
8
- TargetRubyVersion: 2.3
8
+ TargetRubyVersion: 2.4
9
9
  Rails:
10
- Enabled: true
10
+ Enabled: false
@@ -39,11 +39,10 @@ Or install it yourself as:
39
39
  require 'relaton_nist'
40
40
 
41
41
  hit_collection = RelatonNist::NistBibliography.search("8200")
42
- => [<RelatonNist::Hit:0x007f82b9b2b298 @text="8200" @fetched="false" @fullIdentifier="" @title="8200">,
43
- <RelatonNist::Hit:0x007f82b9b2a1e0 @text="8200" @fetched="false" @fullIdentifier="" @title="8200">]
42
+ => <RelatonNist::HitCollection:0x007fc069d19da0 @ref=8200 @fetched=false>
44
43
 
45
44
  item = hit_collection[1].fetch
46
- => #<RelatonNist::NistBibliographicItem:0x007f82b986e668
45
+ => #<RelatonNist::NistBibliographicItem:0x007fc049aa6778
47
46
  ...
48
47
  ----
49
48
 
@@ -71,9 +70,6 @@ item.to_xml bibdata: true
71
70
  ...
72
71
  <ext>
73
72
  <doctype>stadard</doctype>
74
- <keyword>cybersecurity</keyword>
75
- <keyword>cybersecurity objectives</keyword>
76
- ...
77
73
  <commentperiod>
78
74
  <from>2018-02-01</from>
79
75
  <to>2018-04-18</to>
@@ -86,8 +82,9 @@ item.to_xml bibdata: true
86
82
  [source,ruby]
87
83
  ----
88
84
  RelatonNist::NistBibliography.get("8200", "2018", {})
89
- fetching 8200...
90
- => #<RelatonNist::NistBibliographicItem:0x007f82bb3370a8
85
+ [relaton-nist] ("8200") fetching...
86
+ [relaton-nist] ("8200") found NISTIR 8200
87
+ => #<RelatonNist::NistBibliographicItem:0x007fc06aa2b480
91
88
  ...
92
89
  ----
93
90
 
@@ -110,9 +107,10 @@ NIST FIPS {docnumber}
110
107
  ----
111
108
  [source,ruby]
112
109
  ----
113
- RelatonNist::NistBibliography.get("8200", "2018", {})
114
- fetching 8200...
115
- => #<RelatonNist::NistBibliographicItem:0x007f82bb3370a8
110
+ RelatonNist::NistBibliography.get("SP 800-205 (February 2019) (PD)")
111
+ [relaton-nist] ("SP 800-205") fetching...
112
+ [relaton-nist] ("SP 800-205") found SP 800-205 (Draft)
113
+ => #<RelatonNist::NistBibliographicItem:0x007fc059934768
116
114
  ...
117
115
  ----
118
116
 
@@ -42,8 +42,11 @@
42
42
  </define>
43
43
  <define name="xref">
44
44
  <element name="xref">
45
+ <!-- attribute target { xsd:IDREF }, -->
45
46
  <attribute name="target">
46
- <data type="IDREF"/>
47
+ <data type="string">
48
+ <param name="pattern">\i\c*|\c+#\c+</param>
49
+ </data>
47
50
  </attribute>
48
51
  <optional>
49
52
  <attribute name="type">
@@ -61,6 +64,11 @@
61
64
  </choice>
62
65
  </attribute>
63
66
  </optional>
67
+ <optional>
68
+ <attribute name="droploc">
69
+ <data type="boolean"/>
70
+ </attribute>
71
+ </optional>
64
72
  <text/>
65
73
  </element>
66
74
  </define>
@@ -578,6 +586,8 @@
578
586
  <ref name="ol"/>
579
587
  <ref name="dl"/>
580
588
  <ref name="formula"/>
589
+ <ref name="quote"/>
590
+ <ref name="sourcecode"/>
581
591
  </choice>
582
592
  </oneOrMore>
583
593
  </element>
@@ -661,6 +671,16 @@
661
671
  </choice>
662
672
  </attribute>
663
673
  </optional>
674
+ <optional>
675
+ <attribute name="valign">
676
+ <choice>
677
+ <value>top</value>
678
+ <value>middle</value>
679
+ <value>bottom</value>
680
+ <value>baseline</value>
681
+ </choice>
682
+ </attribute>
683
+ </optional>
664
684
  <choice>
665
685
  <zeroOrMore>
666
686
  <choice>
@@ -697,6 +717,16 @@
697
717
  </choice>
698
718
  </attribute>
699
719
  </optional>
720
+ <optional>
721
+ <attribute name="valign">
722
+ <choice>
723
+ <value>top</value>
724
+ <value>middle</value>
725
+ <value>bottom</value>
726
+ <value>baseline</value>
727
+ </choice>
728
+ </attribute>
729
+ </optional>
700
730
  <choice>
701
731
  <zeroOrMore>
702
732
  <choice>
@@ -855,7 +885,7 @@
855
885
  <oneOrMore>
856
886
  <choice>
857
887
  <ref name="content"/>
858
- <ref name="preface_abstract"/>
888
+ <ref name="abstract"/>
859
889
  <ref name="foreword"/>
860
890
  <ref name="introduction"/>
861
891
  <ref name="acknowledgements"/>
@@ -922,6 +952,9 @@
922
952
  <optional>
923
953
  <attribute name="script"/>
924
954
  </optional>
955
+ <optional>
956
+ <attribute name="type"/>
957
+ </optional>
925
958
  <optional>
926
959
  <attribute name="obligation">
927
960
  <choice>
@@ -961,9 +994,6 @@
961
994
  </define>
962
995
  <define name="content-subsection">
963
996
  <element name="clause">
964
- <optional>
965
- <attribute name="type"/>
966
- </optional>
967
997
  <ref name="Content-Section"/>
968
998
  </element>
969
999
  </define>
@@ -992,6 +1022,9 @@
992
1022
  </choice>
993
1023
  </attribute>
994
1024
  </optional>
1025
+ <optional>
1026
+ <attribute name="type"/>
1027
+ </optional>
995
1028
  <optional>
996
1029
  <ref name="section-title"/>
997
1030
  </optional>
@@ -1011,9 +1044,6 @@
1011
1044
  </define>
1012
1045
  <define name="clause">
1013
1046
  <element name="clause">
1014
- <optional>
1015
- <attribute name="type"/>
1016
- </optional>
1017
1047
  <ref name="Clause-Section"/>
1018
1048
  </element>
1019
1049
  </define>
@@ -1042,18 +1072,24 @@
1042
1072
  </choice>
1043
1073
  </attribute>
1044
1074
  </optional>
1075
+ <optional>
1076
+ <attribute name="type"/>
1077
+ </optional>
1045
1078
  <optional>
1046
1079
  <ref name="section-title"/>
1047
1080
  </optional>
1048
1081
  <group>
1049
- <group>
1050
- <zeroOrMore>
1051
- <ref name="BasicBlock"/>
1052
- </zeroOrMore>
1053
- <zeroOrMore>
1054
- <ref name="note"/>
1055
- </zeroOrMore>
1056
- </group>
1082
+ <choice>
1083
+ <group>
1084
+ <zeroOrMore>
1085
+ <ref name="BasicBlock"/>
1086
+ </zeroOrMore>
1087
+ <zeroOrMore>
1088
+ <ref name="note"/>
1089
+ </zeroOrMore>
1090
+ </group>
1091
+ <ref name="amend"/>
1092
+ </choice>
1057
1093
  <zeroOrMore>
1058
1094
  <choice>
1059
1095
  <ref name="clause-subsection"/>
@@ -1180,6 +1216,9 @@
1180
1216
  <optional>
1181
1217
  <attribute name="script"/>
1182
1218
  </optional>
1219
+ <optional>
1220
+ <attribute name="type"/>
1221
+ </optional>
1183
1222
  <optional>
1184
1223
  <attribute name="obligation">
1185
1224
  <choice>
@@ -1447,11 +1486,6 @@
1447
1486
  </optional>
1448
1487
  </element>
1449
1488
  </define>
1450
- <define name="preface_abstract">
1451
- <element name="abstract">
1452
- <ref name="Basic-Section"/>
1453
- </element>
1454
- </define>
1455
1489
  <define name="term-clause">
1456
1490
  <element name="clause">
1457
1491
  <optional>
@@ -1501,4 +1535,79 @@
1501
1535
  <ref name="CitationType"/>
1502
1536
  </element>
1503
1537
  </define>
1538
+ <define name="amend">
1539
+ <element name="amend">
1540
+ <optional>
1541
+ <attribute name="id">
1542
+ <data type="ID"/>
1543
+ </attribute>
1544
+ </optional>
1545
+ <attribute name="change">
1546
+ <choice>
1547
+ <value>add</value>
1548
+ <value>modify</value>
1549
+ <value>delete</value>
1550
+ </choice>
1551
+ </attribute>
1552
+ <optional>
1553
+ <attribute name="path"/>
1554
+ </optional>
1555
+ <optional>
1556
+ <attribute name="path_end"/>
1557
+ </optional>
1558
+ <optional>
1559
+ <attribute name="title"/>
1560
+ </optional>
1561
+ <optional>
1562
+ <element name="location">
1563
+ <zeroOrMore>
1564
+ <ref name="locality"/>
1565
+ </zeroOrMore>
1566
+ </element>
1567
+ </optional>
1568
+ <zeroOrMore>
1569
+ <ref name="autonumber"/>
1570
+ </zeroOrMore>
1571
+ <optional>
1572
+ <element name="description">
1573
+ <zeroOrMore>
1574
+ <ref name="BasicBlock"/>
1575
+ </zeroOrMore>
1576
+ </element>
1577
+ </optional>
1578
+ <optional>
1579
+ <element name="newcontent">
1580
+ <zeroOrMore>
1581
+ <ref name="BasicBlock"/>
1582
+ </zeroOrMore>
1583
+ </element>
1584
+ </optional>
1585
+ <optional>
1586
+ <element name="description">
1587
+ <zeroOrMore>
1588
+ <ref name="BasicBlock"/>
1589
+ </zeroOrMore>
1590
+ </element>
1591
+ </optional>
1592
+ </element>
1593
+ </define>
1594
+ <define name="autonumber">
1595
+ <element name="autonumber">
1596
+ <attribute name="type">
1597
+ <choice>
1598
+ <value>requirement</value>
1599
+ <value>recommendation</value>
1600
+ <value>permission</value>
1601
+ <value>table</value>
1602
+ <value>figure</value>
1603
+ <value>admonition</value>
1604
+ <value>formula</value>
1605
+ <value>sourcecode</value>
1606
+ <value>example</value>
1607
+ <value>note</value>
1608
+ </choice>
1609
+ </attribute>
1610
+ <text/>
1611
+ </element>
1612
+ </define>
1504
1613
  </grammar>
@@ -9,6 +9,24 @@
9
9
  <start>
10
10
  <ref name="nist-standard"/>
11
11
  </start>
12
+ <define name="ol">
13
+ <element name="ol">
14
+ <attribute name="id">
15
+ <data type="ID"/>
16
+ </attribute>
17
+ <optional>
18
+ <attribute name="class">
19
+ <value>steps</value>
20
+ </attribute>
21
+ </optional>
22
+ <oneOrMore>
23
+ <ref name="li"/>
24
+ </oneOrMore>
25
+ <zeroOrMore>
26
+ <ref name="note"/>
27
+ </zeroOrMore>
28
+ </element>
29
+ </define>
12
30
  <define name="DocumentType">
13
31
  <value>standard</value>
14
32
  </define>
@@ -16,7 +34,7 @@
16
34
  <define name="preface">
17
35
  <element name="preface">
18
36
  <optional>
19
- <ref name="preface_abstract"/>
37
+ <ref name="abstract"/>
20
38
  </optional>
21
39
  <optional>
22
40
  <ref name="foreword"/>
@@ -34,5 +34,16 @@ module RelatonNist
34
34
  hash["extended"] = extended.to_s if extended
35
35
  hash
36
36
  end
37
+
38
+ # @param prefix [String]
39
+ # @return [String]
40
+ def to_asciibib(prefix)
41
+ pref = prefix.empty? ? prefix : prefix + "."
42
+ pref += "commentperiod"
43
+ out = "#{pref}.from:: #{from}\n"
44
+ out += "#{pref}.to:: #{to}\n" if to
45
+ out += "#{pref}.extended:: #{extended}\n" if extended
46
+ out
47
+ end
37
48
  end
38
49
  end
@@ -0,0 +1,5 @@
1
+ module RelatonNist
2
+ class DocumentRelation < RelatonBib::DocumentRelation
3
+ TYPES += %w[obsoletedBy supersedes supersededBy].freeze
4
+ end
5
+ end
@@ -26,6 +26,24 @@ module RelatonNist
26
26
 
27
27
  ret[:commentperiod] = CommentPeriod.new ret[:commentperiod]
28
28
  end
29
+
30
+ # @param ret [Hash]
31
+ def relations_hash_to_bib(ret)
32
+ super
33
+ return unless ret[:relation]
34
+
35
+ ret[:relation] = ret[:relation].map { |r| DocumentRelation.new r }
36
+
37
+ # ret[:relation] = array(ret[:relation])
38
+ # ret[:relation]&.each do |r|
39
+ # if r[:description]
40
+ # r[:description] = FormattedString.new r[:description]
41
+ # end
42
+ # relation_bibitem_hash_to_bib(r)
43
+ # relation_locality_hash_to_bib(r)
44
+ # relation_source_locality_hash_to_bib(r)
45
+ # end
46
+ end
29
47
  end
30
48
  end
31
49
  end
@@ -17,10 +17,10 @@ module RelatonNist
17
17
  # @param year [String]
18
18
  # @param opts [Hash]
19
19
  # @option opts [String] :stage
20
- def initialize(ref_nbr, year = nil, opts = {})
20
+ def initialize(ref_nbr, year = nil, opts = {}) # rubocop:disable Metrics/AbcSize
21
21
  super ref_nbr, year
22
22
 
23
- /(?<docid>(SP|FIPS)\s[0-9-]+)/ =~ text
23
+ /(?<docid>(SP|FIPS)\s[0-9-]+\w?)/ =~ text
24
24
  @array = docid ? from_json(docid, **opts) : from_csrc(**opts)
25
25
 
26
26
  @array.sort! do |a, b|
@@ -45,28 +45,28 @@ module RelatonNist
45
45
  from = d.strftime "%m/%d/%Y"
46
46
  to = d.next_year.prev_day.strftime "%m/%d/%Y"
47
47
  end
48
- url = "#{DOMAIN}/publications/search?keywords-lg=#{text}"
48
+ url = "#{DOMAIN}/publications/search?keywords-lg=#{text}"
49
49
  url += "&dateFrom-lg=#{from}" if from
50
50
  url += "&dateTo-lg=#{to}" if to
51
- url += if /PD/ =~ opts[:stage]
51
+ url += if /PD/.match? opts[:stage]
52
52
  "&status-lg=Draft,Retired Draft,Withdrawn"
53
53
  else
54
54
  "&status-lg=Final,Withdrawn"
55
55
  end
56
56
 
57
- doc = Nokogiri::HTML OpenURI.open_uri(::Addressable::URI.parse(url).normalize)
57
+ doc = Nokogiri::HTML OpenURI.open_uri(::Addressable::URI.parse(url).normalize)
58
58
  doc.css("table.publications-table > tbody > tr").map do |h|
59
59
  link = h.at("td/div/strong/a")
60
60
  serie = h.at("td[1]").text.strip
61
61
  code = h.at("td[2]").text.strip
62
62
  title = link.text
63
- doc_url = DOMAIN + link[:href]
63
+ doc_url = DOMAIN + link[:href]
64
64
  status = h.at("td[4]").text.strip.downcase
65
65
  release_date = Date.strptime h.at("td[5]").text.strip, "%m/%d/%Y"
66
66
  Hit.new(
67
67
  {
68
- code: code, serie: serie, title: title, url: doc_url, status: status,
69
- release_date: release_date
68
+ code: code, serie: serie, title: title, url: doc_url,
69
+ status: status, release_date: release_date
70
70
  }, self
71
71
  )
72
72
  end
@@ -91,17 +91,18 @@ module RelatonNist
91
91
  # @param docid [String]
92
92
  # @param stage [String]
93
93
  # @return [Array<Hach>]
94
- def select_data(docid, **opts)
94
+ def select_data(docid, **opts) # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength,Metrics/PerceivedComplexity
95
95
  d = Date.strptime year, "%Y" if year
96
+ didrx = Regexp.new(docid)
96
97
  data.select do |doc|
97
98
  next unless match_year?(doc, d)
98
99
 
99
- if /PD/ =~ opts[:stage]
100
+ if /PD/.match? opts[:stage]
100
101
  next unless %w[draft-public draft-prelim].include? doc["status"]
101
102
  else
102
103
  next unless doc["status"] == "final"
103
104
  end
104
- doc["docidentifier"] =~ Regexp.new(docid)
105
+ doc["docidentifier"] =~ didrx
105
106
  end
106
107
  end
107
108
 
@@ -129,7 +130,9 @@ module RelatonNist
129
130
  #
130
131
  # @prarm ctime [Time, NilClass]
131
132
  def fetch_data(ctime)
132
- resp = OpenURI.open_uri("https://csrc.nist.gov/CSRC/media/feeds/metanorma/pubs-export.meta")
133
+ resp = OpenURI.open_uri(
134
+ "https://csrc.nist.gov/CSRC/media/feeds/metanorma/pubs-export.meta"
135
+ )
133
136
  if !ctime || ctime < resp.last_modified
134
137
  @data = nil
135
138
  zip = OpenURI.open_uri "https://csrc.nist.gov/CSRC/media/feeds/metanorma/pubs-export.zip"
@@ -51,7 +51,7 @@ module RelatonNist
51
51
  # @option abstract [String] :script
52
52
  # @option abstract [String] :type
53
53
  #
54
- # @param relation [Array<Hash>]
54
+ # @param relation [Array<Hash, RelatonNist::DocumentRelation>]
55
55
  # @option relation [String] :type
56
56
  # @option relation [RelatonBib::BibliographicItem] :bibitem
57
57
  # @option relation [Array<RelatonBib::BibItemLocality>] :bib_locality
@@ -83,5 +83,13 @@ module RelatonNist
83
83
  hash["commentperiod"] = commentperiod.to_hash if commentperiod
84
84
  hash
85
85
  end
86
+
87
+ # @param prefix [String]
88
+ # @return [String]
89
+ def to_asciibib(prefix = "")
90
+ out = super
91
+ out += commentperiod.to_asciibib prefix if commentperiod
92
+ out
93
+ end
86
94
  end
87
95
  end
@@ -1,5 +1,6 @@
1
1
  require "relaton_bib"
2
2
  require "relaton_nist/nist_bibliographic_item"
3
+ require "relaton_nist/document_relation"
3
4
  require "relaton_nist/scrapper"
4
5
  require "relaton_nist/hit_collection"
5
6
  require "relaton_nist/xml_parser"
@@ -120,7 +121,7 @@ module RelatonNist
120
121
  end
121
122
 
122
123
  def nistbib_search_filter(code, year, opts)
123
- idregex = %r{[0-9-]{3,}}
124
+ idregex = %r{[0-9-]{3,}\w?}
124
125
  docid = code.match(idregex).to_s
125
126
  serie = code.match(%r{(FISP|SP|NISTIR)(?=\s)})
126
127
  warn "[relaton-nist] (\"#{code}\") fetching..."
@@ -235,15 +235,18 @@ module RelatonNist
235
235
  )
236
236
  end
237
237
  if contr["surname"]
238
- affiliation = RelatonBib::Affiliation.new organization: org
238
+ affiliation = []
239
+ affiliation << RelatonBib::Affiliation.new(organization: org) if org
239
240
  entity = RelatonBib::Person.new(
240
- name: full_name(contr, lang, script), affiliation: [affiliation],
241
+ name: full_name(contr, lang, script), affiliation: affiliation,
241
242
  )
242
- else
243
+ elsif org
243
244
  entity = org
244
245
  end
245
- RelatonBib::ContributionInfo.new entity: entity, role: [type: role]
246
- end
246
+ if entity
247
+ RelatonBib::ContributionInfo.new entity: entity, role: [type: role]
248
+ end
249
+ end.compact
247
250
  end
248
251
 
249
252
  # rubocop:disable Metrics/CyclomaticComplexity
@@ -373,7 +376,7 @@ module RelatonNist
373
376
 
374
377
  # Fetch relations.
375
378
  # @param doc [Nokogiri::HTML::Document]
376
- # @return [Array<RelatonBib::DocumentRelation>]
379
+ # @return [Array<RelatonNist::DocumentRelation>]
377
380
  def fetch_relations(doc)
378
381
  relations = doc.xpath('//span[@id="pub-supersedes-container"]/a').map do |r|
379
382
  doc_relation "supersedes", r.text, DOMAIN + r[:href]
@@ -402,9 +405,9 @@ module RelatonNist
402
405
  # @param type [String]
403
406
  # @param ref [String]
404
407
  # @param uri [String]
405
- # @return [RelatonBib::DocumentRelation]
408
+ # @return [RelatonNist::DocumentRelation]
406
409
  def doc_relation(type, ref, uri, lang = "en", script = "Latn")
407
- RelatonBib::DocumentRelation.new(
410
+ DocumentRelation.new(
408
411
  type: type,
409
412
  bibitem: RelatonBib::BibliographicItem.new(
410
413
  formattedref: RelatonBib::FormattedRef.new(
@@ -1,3 +1,3 @@
1
1
  module RelatonNist
2
- VERSION = "1.2.0".freeze
2
+ VERSION = "1.4.0".freeze
3
3
  end
@@ -1,28 +1,25 @@
1
1
  module RelatonNist
2
2
  class XMLParser < RelatonBib::XMLParser
3
3
  class << self
4
- def from_xml(xml)
5
- doc = Nokogiri::XML xml
6
- doc.remove_namespaces!
7
- nistitem = doc.at("/bibitem|/bibdata")
8
- if nistitem
9
- NistBibliographicItem.new(item_data(nistitem))
10
- elsif
11
- warn "[relaton-nist] can't find bibitem or bibdata element in the XML"
12
- end
13
- end
14
-
15
4
  private
16
5
 
17
- def item_data(nistitem)
6
+ # @param intem [Nokogiri::XML::Document]
7
+ # @return [Hash]
8
+ def item_data(item)
18
9
  data = super
19
- ext = nistitem.at "./ext"
10
+ ext = item.at "./ext"
20
11
  return data unless ext
21
12
 
22
13
  data[:commentperiod] = fetch_commentperiod(ext)
23
14
  data
24
15
  end
25
16
 
17
+ # @param item_hash [Hash]
18
+ # @return [RelatonNist::NistBibliographicItem]
19
+ def bib_item(item_hash)
20
+ NistBibliographicItem.new item_hash
21
+ end
22
+
26
23
  def fetch_status(item)
27
24
  status = item.at "./status"
28
25
  return unless status
@@ -43,6 +40,12 @@ module RelatonNist
43
40
  extended: cp.at("extended")&.text
44
41
  )
45
42
  end
43
+
44
+ # @param item [Nokogiri::XML::Element]
45
+ # @return [Array<RelatonBib::DocumentRelation>]
46
+ def fetch_relations(item)
47
+ super item, DocumentRelation
48
+ end
46
49
  end
47
50
  end
48
51
  end
@@ -34,6 +34,6 @@ Gem::Specification.new do |spec|
34
34
  spec.add_development_dependency "vcr"
35
35
  spec.add_development_dependency "webmock"
36
36
 
37
- spec.add_dependency "relaton-bib", "~> 1.2.0"
37
+ spec.add_dependency "relaton-bib", "~> 1.4.0"
38
38
  spec.add_dependency "rubyzip"
39
39
  end
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.2.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-26 00:00:00.000000000 Z
11
+ date: 2020-09-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.2.0
159
+ version: 1.4.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.2.0
166
+ version: 1.4.0
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: rubyzip
169
169
  requirement: !ruby/object:Gem::Requirement
@@ -204,6 +204,7 @@ files:
204
204
  - grammars/reqt.rng
205
205
  - lib/relaton_nist.rb
206
206
  - lib/relaton_nist/comment_period.rb
207
+ - lib/relaton_nist/document_relation.rb
207
208
  - lib/relaton_nist/document_status.rb
208
209
  - lib/relaton_nist/hash_converter.rb
209
210
  - lib/relaton_nist/hit.rb
@@ -219,7 +220,7 @@ homepage: https://github.com/metanorma/relaton-nist
219
220
  licenses:
220
221
  - MIT
221
222
  metadata: {}
222
- post_install_message:
223
+ post_install_message:
223
224
  rdoc_options: []
224
225
  require_paths:
225
226
  - lib
@@ -235,7 +236,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
235
236
  version: '0'
236
237
  requirements: []
237
238
  rubygems_version: 3.0.6
238
- signing_key:
239
+ signing_key:
239
240
  specification_version: 4
240
241
  summary: 'RelatonNist: retrive NIST standards.'
241
242
  test_files: []