relaton-nist 1.14.6 → 1.14.7

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: 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