relaton-nist 1.10.1 → 1.11.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d843669047c6d1d170c7cf1e4ec20947cdb90bd888370d7f1bcab3e5eb5b7ab0
4
- data.tar.gz: c4c62956580641d0d71ff70cc848803b203d76418e8cdb8b64f572d880f620a2
3
+ metadata.gz: 6d5db99f4b5678fecd7b926c007b66149d72123c4a6aaaed113589b667c00b8c
4
+ data.tar.gz: 1f82071f8e6ed586475d915a1d105b5aefba8dedb5042cfe1d0230d0a41a51fa
5
5
  SHA512:
6
- metadata.gz: 37bbd4792e8c866ed5dae0a703318dc7175946da4e91d223d0f010d4418a0da25380a59291edc7d7746cad8e36af54012d59b6b72cfad23d3c01d500b4724952
7
- data.tar.gz: e44ecec41e34b5e5bd575759e08a571eb8bd4db4e102b4bfcac2c4b17f6d20410b069468d7b55de95e49d7c4747fc57ddc71fcc43a27418ccfa50e1820907a17
6
+ metadata.gz: 14a85ac2317285758f0fd1e18faa6ca70491a53c5dd8aa0a6c53e2d4e91a3bf8c8d8ab63a57aeb68238301bfe07c0e4a97e32ee50f85b26fb576127db309e4b1
7
+ data.tar.gz: 40e515d019b42731617c8569b40d03a911e9a3c1ba19dec11afa73dec7a52c6762f97085549658c0459ae6d328be28dd4e851a7641f77622f191138666193f93
data/Gemfile CHANGED
@@ -1,6 +1,3 @@
1
- Encoding.default_external = Encoding::UTF_8
2
- Encoding.default_internal = Encoding::UTF_8
3
-
4
1
  source "https://rubygems.org"
5
2
 
6
3
  # Specify your gem's dependencies in relaton_nist.gemspec
@@ -173,9 +173,11 @@
173
173
  <data type="dateTime"/>
174
174
  </attribute>
175
175
  </optional>
176
- <attribute name="from">
177
- <data type="IDREF"/>
178
- </attribute>
176
+ <optional>
177
+ <attribute name="from">
178
+ <data type="IDREF"/>
179
+ </attribute>
180
+ </optional>
179
181
  <optional>
180
182
  <attribute name="to">
181
183
  <data type="IDREF"/>
@@ -624,6 +626,9 @@
624
626
  <choice>
625
627
  <ref name="PureTextElement"/>
626
628
  <ref name="stem"/>
629
+ <ref name="eref"/>
630
+ <ref name="xref"/>
631
+ <ref name="hyperlink"/>
627
632
  </choice>
628
633
  </zeroOrMore>
629
634
  </element>
@@ -634,6 +639,9 @@
634
639
  <choice>
635
640
  <ref name="PureTextElement"/>
636
641
  <ref name="stem"/>
642
+ <ref name="eref"/>
643
+ <ref name="xref"/>
644
+ <ref name="hyperlink"/>
637
645
  </choice>
638
646
  </zeroOrMore>
639
647
  </element>
@@ -641,7 +649,12 @@
641
649
  <define name="tt">
642
650
  <element name="tt">
643
651
  <zeroOrMore>
644
- <ref name="PureTextElement"/>
652
+ <choice>
653
+ <ref name="PureTextElement"/>
654
+ <ref name="eref"/>
655
+ <ref name="xref"/>
656
+ <ref name="hyperlink"/>
657
+ </choice>
645
658
  </zeroOrMore>
646
659
  </element>
647
660
  </define>
@@ -822,7 +835,9 @@
822
835
  <attribute name="alt"/>
823
836
  </optional>
824
837
  <ref name="CitationType"/>
825
- <text/>
838
+ <oneOrMore>
839
+ <ref name="PureTextElement"/>
840
+ </oneOrMore>
826
841
  </define>
827
842
  <define name="hyperlink">
828
843
  <element name="link">
@@ -835,7 +850,9 @@
835
850
  <optional>
836
851
  <attribute name="alt"/>
837
852
  </optional>
838
- <text/>
853
+ <oneOrMore>
854
+ <ref name="PureTextElement"/>
855
+ </oneOrMore>
839
856
  </element>
840
857
  </define>
841
858
  <define name="xref">
@@ -849,7 +866,9 @@
849
866
  <optional>
850
867
  <attribute name="alt"/>
851
868
  </optional>
852
- <text/>
869
+ <oneOrMore>
870
+ <ref name="PureTextElement"/>
871
+ </oneOrMore>
853
872
  </element>
854
873
  </define>
855
874
  <define name="fn">
data/grammars/biblio.rng CHANGED
@@ -677,6 +677,9 @@
677
677
  <zeroOrMore>
678
678
  <ref name="extent"/>
679
679
  </zeroOrMore>
680
+ <optional>
681
+ <ref name="bibliographic_size"/>
682
+ </optional>
680
683
  <zeroOrMore>
681
684
  <ref name="accesslocation"/>
682
685
  </zeroOrMore>
@@ -922,9 +925,29 @@
922
925
  <text/>
923
926
  </element>
924
927
  </define>
928
+ <define name="sizevalue">
929
+ <element name="value">
930
+ <attribute name="type"/>
931
+ <text/>
932
+ </element>
933
+ </define>
934
+ <define name="bibliographic_size">
935
+ <element name="size">
936
+ <oneOrMore>
937
+ <ref name="sizevalue"/>
938
+ </oneOrMore>
939
+ </element>
940
+ </define>
925
941
  <define name="extent">
926
942
  <element name="extent">
927
- <ref name="BibItemLocality"/>
943
+ <choice>
944
+ <zeroOrMore>
945
+ <ref name="locality"/>
946
+ </zeroOrMore>
947
+ <zeroOrMore>
948
+ <ref name="localityStack"/>
949
+ </zeroOrMore>
950
+ </choice>
928
951
  </element>
929
952
  </define>
930
953
  <define name="series">
data/grammars/isodoc.rng CHANGED
@@ -152,9 +152,7 @@
152
152
  <data type="boolean"/>
153
153
  </attribute>
154
154
  </optional>
155
- <oneOrMore>
156
- <ref name="PureTextElement"/>
157
- </oneOrMore>
155
+ <ref name="XrefBody"/>
158
156
  </element>
159
157
  </define>
160
158
  <define name="erefType">
@@ -188,6 +186,42 @@
188
186
  <ref name="PureTextElement"/>
189
187
  </oneOrMore>
190
188
  </define>
189
+ <define name="localityStack">
190
+ <element name="localityStack">
191
+ <optional>
192
+ <attribute name="connective">
193
+ <choice>
194
+ <value>and</value>
195
+ <value>or</value>
196
+ <value>from</value>
197
+ <value>to</value>
198
+ <value/>
199
+ </choice>
200
+ </attribute>
201
+ </optional>
202
+ <zeroOrMore>
203
+ <ref name="locality"/>
204
+ </zeroOrMore>
205
+ </element>
206
+ </define>
207
+ <define name="sourceLocalityStack">
208
+ <element name="sourceLocalityStack">
209
+ <optional>
210
+ <attribute name="connective">
211
+ <choice>
212
+ <value>and</value>
213
+ <value>or</value>
214
+ <value>from</value>
215
+ <value>to</value>
216
+ <value/>
217
+ </choice>
218
+ </attribute>
219
+ </optional>
220
+ <zeroOrMore>
221
+ <ref name="sourceLocality"/>
222
+ </zeroOrMore>
223
+ </element>
224
+ </define>
191
225
  <define name="ul">
192
226
  <element name="ul">
193
227
  <attribute name="id">
@@ -1098,6 +1132,16 @@
1098
1132
  </define>
1099
1133
  </include>
1100
1134
  <!-- end overrides -->
1135
+ <define name="image" combine="choice">
1136
+ <element name="svg">
1137
+ <oneOrMore>
1138
+ <choice>
1139
+ <text/>
1140
+ <ref name="AnyElement"/>
1141
+ </choice>
1142
+ </oneOrMore>
1143
+ </element>
1144
+ </define>
1101
1145
  <define name="MultilingualRenderingType">
1102
1146
  <choice>
1103
1147
  <value>common</value>
@@ -2631,4 +2675,30 @@
2631
2675
  </zeroOrMore>
2632
2676
  </element>
2633
2677
  </define>
2678
+ <define name="XrefBody">
2679
+ <zeroOrMore>
2680
+ <ref name="XrefTarget"/>
2681
+ </zeroOrMore>
2682
+ <oneOrMore>
2683
+ <ref name="PureTextElement"/>
2684
+ </oneOrMore>
2685
+ </define>
2686
+ <define name="XrefTarget">
2687
+ <element name="location">
2688
+ <attribute name="target">
2689
+ <data type="string">
2690
+ <param name="pattern">\i\c*|\c+#\c+</param>
2691
+ </data>
2692
+ </attribute>
2693
+ <attribute name="connective">
2694
+ <choice>
2695
+ <value>and</value>
2696
+ <value>or</value>
2697
+ <value>from</value>
2698
+ <value>to</value>
2699
+ <value/>
2700
+ </choice>
2701
+ </attribute>
2702
+ </element>
2703
+ </define>
2634
2704
  </grammar>
data/grammars/reqt.rng CHANGED
@@ -58,6 +58,14 @@
58
58
  <optional>
59
59
  <attribute name="type"/>
60
60
  </optional>
61
+ <optional>
62
+ <attribute name="tag"/>
63
+ </optional>
64
+ <optional>
65
+ <attribute name="multilingual-rendering">
66
+ <ref name="MultilingualRenderingType"/>
67
+ </attribute>
68
+ </optional>
61
69
  <optional>
62
70
  <ref name="reqtitle"/>
63
71
  </optional>
@@ -101,7 +109,9 @@
101
109
  </define>
102
110
  <define name="label">
103
111
  <element name="label">
104
- <text/>
112
+ <oneOrMore>
113
+ <ref name="TextElement"/>
114
+ </oneOrMore>
105
115
  </element>
106
116
  </define>
107
117
  <define name="subject">
@@ -175,6 +185,14 @@
175
185
  <data type="boolean"/>
176
186
  </attribute>
177
187
  </optional>
188
+ <optional>
189
+ <attribute name="tag"/>
190
+ </optional>
191
+ <optional>
192
+ <attribute name="multilingual-rendering">
193
+ <ref name="MultilingualRenderingType"/>
194
+ </attribute>
195
+ </optional>
178
196
  <oneOrMore>
179
197
  <ref name="BasicBlock"/>
180
198
  </oneOrMore>
@@ -34,16 +34,17 @@ module RelatonNist
34
34
  # anchor = doi.split("/")[1..-1].join "/"
35
35
  [
36
36
  { type: "NIST", id: pub_id(doc), primary: true },
37
- { type: "DOI", id: doi(doc) },
38
- { type: "NIST", id: anchor(doc), scope: "anchor" },
37
+ { type: "DOI", id: fetch_doi(doc) },
38
+ # { type: "NIST", id: anchor(doc), scope: "anchor" },
39
39
  ]
40
40
  end
41
41
 
42
42
  def pub_id(doc)
43
- anchor(doc).gsub(".", " ")
43
+ # anchor(doc).gsub(".", " ")
44
+ fetch_doi(doc).split("/")[1..-1].join("/").gsub(".", " ")
44
45
  end
45
46
 
46
- def doi(doc) # rubocop:disable Metrics/CyclomaticComplexity
47
+ def fetch_doi(doc) # rubocop:disable Metrics/CyclomaticComplexity
47
48
  id = doc.at("doi_data/doi").text
48
49
  case id
49
50
  when "10.6028/NBS.CIRC.e2e" then "10.6028/NBS.CIRC.2e2"
@@ -56,9 +57,9 @@ module RelatonNist
56
57
  end
57
58
  end
58
59
 
59
- def anchor(doc)
60
- doi(doc).split("/")[1..-1].join "/"
61
- end
60
+ # def anchor(doc)
61
+ # fetch_doi(doc).split("/")[1..-1].join "/"
62
+ # end
62
63
 
63
64
  # @param doc [Nokogiri::XML::Element]
64
65
  # @return [Array<RelatonBib::DocumentIdentifier>]
@@ -115,8 +116,11 @@ module RelatonNist
115
116
  # @param doc [Nokogiri::XML::Element]
116
117
  # @return [Array<RelatonBib::TypedUri>]
117
118
  def fetch_link(doc)
118
- url = doc.at("doi_data/resource").text
119
- [RelatonBib::TypedUri.new(type: "doi", content: url)]
119
+ pdf = doc.at("doi_data/resource").text
120
+ doi = "https://doi.org/#{fetch_doi(doc)}"
121
+ [{ type: "doi", content: doi }, { type: "pdf", content: pdf }].map do |l|
122
+ RelatonBib::TypedUri.new(**l)
123
+ end
120
124
  end
121
125
 
122
126
  # @param doc [Nokogiri::XML::Element]
@@ -137,7 +137,7 @@ module RelatonNist
137
137
  # @return [Hash]
138
138
  def data
139
139
  ctime = File.ctime DATAFILE if File.exist? DATAFILE
140
- if !ctime || ctime.to_date < Date.today
140
+ if !ctime || ctime.to_date < Date.today || File.size(DATAFILE).zero?
141
141
  fetch_data(ctime)
142
142
  end
143
143
  unzip
@@ -163,10 +163,7 @@ module RelatonNist
163
163
  return @data if @data
164
164
 
165
165
  Zip::File.open(DATAFILE) do |zf|
166
- zf.each do |f|
167
- @data = JSON.parse f.get_input_stream.read
168
- break
169
- end
166
+ @data = JSON.parse zf.first.get_input_stream.read
170
167
  end
171
168
  @data
172
169
  end
@@ -101,5 +101,16 @@ module RelatonNist
101
101
  out += commentperiod.to_asciibib prefix if commentperiod
102
102
  out
103
103
  end
104
+
105
+ #
106
+ # Create BibXML reference attributes
107
+ #
108
+ # @return [Hash<Symbol=>String>] attributes
109
+ #
110
+ def ref_attrs
111
+ docidentifier.detect(&:primary)&.tap do |di|
112
+ return { anchor: di.id.gsub(" ", ".") }
113
+ end
114
+ end
104
115
  end
105
116
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonNist
2
- VERSION = "1.10.1".freeze
2
+ VERSION = "1.11.1".freeze
3
3
  end
data/relaton_nist.gemspec CHANGED
@@ -32,6 +32,6 @@ Gem::Specification.new do |spec|
32
32
  spec.add_development_dependency "vcr"
33
33
  spec.add_development_dependency "webmock"
34
34
 
35
- spec.add_dependency "relaton-bib", "~> 1.10.1"
35
+ spec.add_dependency "relaton-bib", "~> 1.11.0"
36
36
  spec.add_dependency "rubyzip"
37
37
  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.10.1
4
+ version: 1.11.1
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-02-09 00:00:00.000000000 Z
11
+ date: 2022-05-01 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.10.1
131
+ version: 1.11.0
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.10.1
138
+ version: 1.11.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: rubyzip
141
141
  requirement: !ruby/object:Gem::Requirement