relaton-nist 1.14.6 → 1.14.7

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: ff158dab9df4bfc2254789771db9ca74bc422b9d6ac78351da0ccbca1d858815
4
- data.tar.gz: e7ef8d2cb1ff797095f7c6646194610ffe7bab67f97d909c9d54d75d9f0552c3
3
+ metadata.gz: af449d7420c8250ae7df9a33a292ac5278150c9159c05252650707746284feaa
4
+ data.tar.gz: f01fceceb91e3e91e0cb6b532fa2b63fdecfb88d18ddc9879f98b10733637232
5
5
  SHA512:
6
- metadata.gz: ef6f0be37367d7e71ac0783be8252219a9a49e7affe27bfcef78c21929d64c10b2f4cba081a4515d75e64bfccffed21dd72848d2653594363f9e4fa753c7c002
7
- data.tar.gz: f9b24bb62b115b11f291a9514420426a758d3207062e4bd75fc09169f32338d3891ca802441df405ce9b4ab159f39aea2762c458e811c30e87523e9835a94dbc
6
+ metadata.gz: 158958c46a83455aa5a14ec3f9c1f84a6bd70870fb2f1e85dc37d2200d8a3b3a0a4bf824f924ac775f54d1204656f0f40c078f6b71a737efd33d46f93fc681c3
7
+ data.tar.gz: c999b71e25e1aef1f5d3a066db3f0720149c23a2cca13a75fa453201a06aabc7cf21a4b313b21f8e98dbeece8803c8f65ba0a3d79e0d8c942244d07fe656341d
data/README.adoc CHANGED
@@ -43,6 +43,14 @@ sources:
43
43
  . bibliographic feed from NIST CSRC
44
44
  . NIST Library dataset
45
45
 
46
+ The NIST CSRC provides:
47
+
48
+ * NIST SP 800-*
49
+ * NIST SP 500-*
50
+ * NIST SP 1800-*
51
+ * NIST FIPS {31, 39, 41, 46, 46-$$*$$, 48, 65, 73, 74, 81, 83, 87, 102, 112, 113, 139, 140-$$*$$, 141, 171, 180, 180-$$*$$, 181, 186, 186-$$*$$, 188, 190, 191, 196, 197, 198, 198-1, 199, 200, 201, 201-*, 202}
52
+
53
+ The NIST Library dataset provides documents listed in the https://github.com/relaton/relaton-data-nist/blob/main/index-v1.yaml[index].
46
54
 
47
55
  == Installation
48
56
 
@@ -36,9 +36,16 @@ module RelatonNist
36
36
  ]
37
37
  end
38
38
 
39
+ #
40
+ # Parse document's ID from XML
41
+ #
42
+ # @param [Nokogiri::XML::Element] doc XML element
43
+ #
44
+ # @return [String] document's ID
45
+ #
39
46
  def pub_id(doc)
40
47
  # anchor(doc).gsub(".", " ")
41
- fetch_doi(doc).split("/")[1..].join("/").gsub(".", " ")
48
+ fetch_doi(doc).split("/")[1..].join("/").gsub(".", " ").sub(/^nist\sir/, "NIST IR")
42
49
  end
43
50
 
44
51
  def fetch_doi(doc) # rubocop:disable Metrics/CyclomaticComplexity
@@ -269,8 +276,6 @@ module RelatonNist
269
276
  # @return [Array<RelatonBib::Series>] series
270
277
  #
271
278
  def fetch_series(doc)
272
- series_path = File.expand_path("series.yaml", __dir__)
273
- series = YAML.load_file series_path
274
279
  prf, srs, num = pub_id(doc).split
275
280
  sname = series[srs] || srs
276
281
  title = RelatonBib::TypedTitleString.new(content: "#{prf} #{sname}")
@@ -278,6 +283,10 @@ module RelatonNist
278
283
  [RelatonBib::Series.new(title: title, abbreviation: abbr, number: num)]
279
284
  end
280
285
 
286
+ def series
287
+ @series ||= YAML.load_file File.expand_path("series.yaml", __dir__)
288
+ end
289
+
281
290
  #
282
291
  # Save document
283
292
  #
@@ -19,24 +19,24 @@ module RelatonNist
19
19
  #
20
20
  # @return [Iteger] sorting weigth
21
21
  #
22
- def sort_value # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
23
- @sort_value ||= begin
24
- sort_phrase = [hit[:series], hit[:code], hit[:title]].join " "
25
- corr = hit_collection&.text&.split&.map do |w|
26
- if w =~ /\w+/ &&
27
- sort_phrase =~ Regexp.new(Regexp.escape(w), Regexp::IGNORECASE)
28
- 1
29
- else 0
30
- end
31
- end&.sum.to_i
32
- corr + case hit[:status]
33
- when "final" then 4
34
- when "withdrawn" then 3
35
- when "draft" then 2
36
- when "draft (obsolete)" then 1
37
- else 0
38
- end
39
- end
40
- end
22
+ # def sort_value # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity
23
+ # @sort_value ||= begin
24
+ # sort_phrase = [hit[:series], hit[:code]].join " "
25
+ # corr = hit_collection&.text&.split&.map do |w|
26
+ # if w =~ /\w+/ &&
27
+ # sort_phrase =~ Regexp.new(Regexp.escape(w), Regexp::IGNORECASE)
28
+ # 1
29
+ # else 0
30
+ # end
31
+ # end&.sum.to_i
32
+ # corr + case hit[:status]
33
+ # when "final" then 4
34
+ # when "withdrawn" then 3
35
+ # when "draft" then 2
36
+ # when "draft (obsolete)" then 1
37
+ # else 0
38
+ # end
39
+ # end
40
+ # end
41
41
  end
42
42
  end
@@ -59,9 +59,9 @@ module RelatonNist
59
59
  (refparts[:code] && [parts[:series], item.hit[:series]].include?(refparts[:series]) &&
60
60
  refparts[:code].casecmp(parts[:code].upcase).zero? &&
61
61
  (refparts[:prt] == parts[:prt]) &&
62
- (refparts[:vol] == parts[:vol]) &&
63
- (refparts[:ver] == parts[:ver]) &&
64
- (refparts[:rev] == parts[:rev]) &&
62
+ (refparts[:vol].nil? || refparts[:vol] == parts[:vol]) &&
63
+ (refparts[:ver].nil? || refparts[:ver] == parts[:ver]) &&
64
+ (refparts[:rev].nil? || refparts[:rev] == parts[:rev]) &&
65
65
  refparts[:draft] == parts[:draft] && refparts[:add] == parts[:add])
66
66
  end
67
67
  end
@@ -164,11 +164,10 @@ module RelatonNist
164
164
  #
165
165
  def sort_hits!
166
166
  @array.sort! do |a, b|
167
- if a.sort_value == b.sort_value
168
- (b.hit[:release_date] - a.hit[:release_date]).to_i
169
- else
170
- b.sort_value - a.sort_value
171
- end
167
+ code = a.hit[:code] <=> b.hit[:code]
168
+ next code unless code.zero?
169
+
170
+ b.hit[:release_date] <=> a.hit[:release_date]
172
171
  end
173
172
  self
174
173
  end
@@ -191,7 +190,8 @@ module RelatonNist
191
190
  hash = YAML.safe_load yaml
192
191
  hash["fetched"] = Date.today.to_s
193
192
  bib = RelatonNist::NistBibliographicItem.from_hash hash
194
- hit = Hit.new({ code: text }, self)
193
+ id = bib.docidentifier.find(&:primary).id
194
+ hit = Hit.new({ code: id }, self)
195
195
  hit.fetch = bib
196
196
  [hit]
197
197
  rescue OpenURI::HTTPError => e
@@ -12,7 +12,7 @@ module RelatonNist
12
12
  class NistBibliography
13
13
  class << self
14
14
  #
15
- # Search NIST docuemnts by reference
15
+ # Search NIST documents by reference
16
16
  #
17
17
  # @param text [String] reference
18
18
  #
@@ -22,7 +22,7 @@ MONO: Monographs
22
22
  MP: Miscellaneous Publications
23
23
  NCSTAR: National Construction Safety Team Act Reports
24
24
  NSRDS: National Standard Reference Data Series
25
- IR: NISTIRs (Interagency/Internal Reports)
25
+ IR: IR (Interagency/Internal Reports)
26
26
  OWMWP: Office of Weights and Measures White Papers
27
27
  PC: Photographic Circulars
28
28
  RPT: NBS Reports
@@ -1,3 +1,3 @@
1
1
  module RelatonNist
2
- VERSION = "1.14.6".freeze
2
+ VERSION = "1.14.7".freeze
3
3
  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.14.6
4
+ version: 1.14.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-06-06 00:00:00.000000000 Z
11
+ date: 2023-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: relaton-bib