Class: RelatonNist::HitCollection
- Inherits:
-
RelatonBib::HitCollection
- Object
- RelatonBib::HitCollection
- RelatonNist::HitCollection
- Defined in:
- lib/relaton_nist/hit_collection.rb
Overview
Page of hit collection.
Constant Summary collapse
- DOMAIN =
"https://csrc.nist.gov"- PUBS_EXPORT =
URI.join(DOMAIN, "/CSRC/media/feeds/metanorma/pubs-export")
- DATAFILEDIR =
File. ".relaton/nist", Dir.home
- DATAFILE =
File. "pubs-export.zip", DATAFILEDIR
- GHNISTDATA =
"https://raw.githubusercontent.com/relaton/relaton-data-nist/main/data/"
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.search(text, year = nil, opts = {}) ⇒ Object
18 19 20 |
# File 'lib/relaton_nist/hit_collection.rb', line 18 def self.search(text, year = nil, opts = {}) new(text, year).search(opts) end |
Instance Method Details
#search(opts) ⇒ Object
22 23 24 25 26 |
# File 'lib/relaton_nist/hit_collection.rb', line 22 def search(opts) @array = from_json(**opts) @array = from_ga unless @array.any? sort_hits! end |
#search_filter ⇒ Array<RelatonNist::Hit>
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/relaton_nist/hit_collection.rb', line 29 def search_filter # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity,Metrics/MethodLength,Metrics/PerceivedComplexity @array.select do |item| %r{ ^(?:(?:NIST|NBS)\s?)? (?:(?<series>(?:SP|FIPS|IR|ITL\sBulletin|White\sPaper))\s)? (?<code>[0-9-]{3,}[A-Z]?) (?<prt1>pt\d+)? (?<vol1>v\d+)? (?<ver1>ver[\d.]+)? (?<rev1>r\d+)? (?:\s(?<prt2>Part\s\d+))? (?:\s(?<vol2>Vol\.\s\d+))? (?:\s(?<ver2>(?:Ver\.|Version)\s[\d.]+))? (?:\s(?<rev2>Rev\.\s\d+))? (?:\s(?<add>Add)endum)? }x =~ item.hit[:code] (refparts[:code] && [series, item.hit[:series]].include?(refparts[:series]) && refparts[:code] == code && long_to_short(refparts[:prt1], refparts[:prt2]) == long_to_short(prt1, prt2) && long_to_short(refparts[:vol1], refparts[:vol2]) == long_to_short(vol1, vol2) && long_to_short(refparts[:ver1], refparts[:ver2]) == long_to_short(ver1, ver2) && long_to_short(refparts[:rev1], refparts[:rev2]) == long_to_short(rev1, rev2) && long_to_short(refparts[:add1], refparts[:add2]) == add) || item.hit[:title]&.include?(text.sub(/^NIST\s/, "")) end end |