relaton-nist 0.7.0 → 0.9.1
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 +4 -4
- data/lib/relaton_nist/hit.rb +0 -3
- data/lib/relaton_nist/hit_collection.rb +3 -9
- data/lib/relaton_nist/nist_bibliography.rb +17 -13
- data/lib/relaton_nist/scrapper.rb +2 -2
- data/lib/relaton_nist/version.rb +1 -1
- data/lib/relaton_nist/xml_parser.rb +6 -1
- data/relaton_nist.gemspec +2 -3
- metadata +8 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b76a47785318a2497fae5a3fdab022b16d6117ad91470a23c46e73773e1e59ea
|
4
|
+
data.tar.gz: b33350d778c2c378f208443e5d9a7b636d2f22ee1908a953b6200abed97a7fb5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ae73a5ae455ca08d1cefaf446a419c07fd1984f7f2e6105666aa87ed2dc01206c8c832d2b0a01cd273cbd5b6248b93b971ab8e68bfb36b2fe8a46a1e95bd09a
|
7
|
+
data.tar.gz: 20c7e25ea1fdaa2af341213dfe85ad81357bd40abd035a18468c0f168c5b149eb3e8e5a35d724bbc8838e184233774e6a66fdaaef6a5b1aaf8dc4c12dee63502
|
data/lib/relaton_nist/hit.rb
CHANGED
@@ -13,30 +13,24 @@ module RelatonNist
|
|
13
13
|
DATAFILEDIR = File.expand_path ".relaton/nist", Dir.home
|
14
14
|
DATAFILE = File.expand_path "pubs-export.zip", DATAFILEDIR
|
15
15
|
|
16
|
-
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
17
|
-
|
18
16
|
# @param ref_nbr [String]
|
19
17
|
# @param year [String]
|
20
18
|
# @param opts [Hash]
|
21
19
|
# @option opts [String] :stage
|
22
20
|
def initialize(ref_nbr, year = nil, opts = {})
|
23
|
-
|
24
|
-
@year = year
|
21
|
+
super ref_nbr, year
|
25
22
|
|
26
23
|
/(?<docid>(SP|FIPS)\s[0-9-]+)/ =~ text
|
27
|
-
|
24
|
+
@array = docid ? from_json(docid, **opts) : from_csrc(**opts)
|
28
25
|
|
29
|
-
|
26
|
+
@array.sort! do |a, b|
|
30
27
|
if a.sort_value != b.sort_value
|
31
28
|
b.sort_value - a.sort_value
|
32
29
|
else
|
33
30
|
(b.hit[:release_date] - a.hit[:release_date]).to_i
|
34
31
|
end
|
35
32
|
end
|
36
|
-
concat hits
|
37
|
-
@fetched = false
|
38
33
|
end
|
39
|
-
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
40
34
|
|
41
35
|
private
|
42
36
|
|
@@ -60,9 +60,12 @@ module RelatonNist
|
|
60
60
|
def nistbib_get1(code, year, opts)
|
61
61
|
result = nistbib_search_filter(code, year, opts) || (return nil)
|
62
62
|
ret = nistbib_results_filter(result, year, opts)
|
63
|
-
|
64
|
-
|
65
|
-
|
63
|
+
if ret[:ret]
|
64
|
+
warn "[relaton-nist] (\"#{code}\") found #{ret[:ret].docidentifier.first.id}"
|
65
|
+
ret[:ret]
|
66
|
+
else
|
67
|
+
fetch_ref_err(code, year, ret[:years])
|
68
|
+
end
|
66
69
|
end
|
67
70
|
|
68
71
|
# Sort through the results from RelatonNist, fetching them three at a time,
|
@@ -108,32 +111,33 @@ module RelatonNist
|
|
108
111
|
{ years: missed_years }
|
109
112
|
end
|
110
113
|
|
111
|
-
def fetch_pages(
|
112
|
-
workers = RelatonBib::WorkersPool.new
|
114
|
+
def fetch_pages(hits, threads)
|
115
|
+
workers = RelatonBib::WorkersPool.new threads
|
113
116
|
workers.worker { |w| { i: w[:i], hit: w[:hit].fetch } }
|
114
|
-
|
117
|
+
hits.each_with_index { |hit, i| workers << { i: i, hit: hit } }
|
115
118
|
workers.end
|
116
|
-
workers.result.
|
119
|
+
workers.result.sort_by { |a| a[:i] }.map { |x| x[:hit] }
|
117
120
|
end
|
118
121
|
|
119
122
|
def nistbib_search_filter(code, year, opts)
|
120
|
-
|
123
|
+
idregex = %r{[0-9-]{3,}}
|
124
|
+
docid = code.match(idregex).to_s
|
121
125
|
serie = code.match(%r{(FISP|SP|NISTIR)(?=\s)})
|
122
|
-
warn "
|
126
|
+
warn "[relaton-nist] (\"#{code}\") fetching..."
|
123
127
|
result = search(code, year, opts)
|
124
128
|
result.select do |i|
|
125
|
-
i.hit[:code]&.
|
129
|
+
i.hit[:code]&.match(idregex).to_s == docid && (!serie || i.hit[:serie] == serie.to_s)
|
126
130
|
end
|
127
131
|
end
|
128
132
|
|
129
133
|
def fetch_ref_err(code, year, missed_years)
|
130
134
|
id = year ? "#{code}:#{year}" : code
|
131
|
-
warn "WARNING: no match found online for #{id}. "\
|
135
|
+
warn "[relaton-nist] WARNING: no match found online for #{id}. "\
|
132
136
|
"The code must be exactly like it is on the standards website."
|
133
|
-
warn "(There was no match for #{year}, though there were matches "\
|
137
|
+
warn "[relaton-nist] (There was no match for #{year}, though there were matches "\
|
134
138
|
"found for #{missed_years.join(', ')}.)" unless missed_years.empty?
|
135
139
|
if /\d-\d/ =~ code
|
136
|
-
warn "The provided document part may not exist, or the document "\
|
140
|
+
warn "[relaton-nist] The provided document part may not exist, or the document "\
|
137
141
|
"may no longer be published in parts."
|
138
142
|
end
|
139
143
|
nil
|
@@ -235,7 +235,7 @@ module RelatonNist
|
|
235
235
|
)
|
236
236
|
end
|
237
237
|
if contr["surname"]
|
238
|
-
affiliation = RelatonBib::
|
238
|
+
affiliation = RelatonBib::Affiliation.new organization: org
|
239
239
|
entity = RelatonBib::Person.new(
|
240
240
|
name: full_name(contr, lang, script), affiliation: [affiliation],
|
241
241
|
)
|
@@ -271,7 +271,7 @@ module RelatonNist
|
|
271
271
|
url = nil
|
272
272
|
end
|
273
273
|
org = RelatonBib::Organization.new name: org_name, url: url, abbreviation: abbrev
|
274
|
-
affiliation = RelatonBib::
|
274
|
+
affiliation = RelatonBib::Affiliation.new organization: org
|
275
275
|
entity = RelatonBib::Person.new(
|
276
276
|
name: fullname, affiliation: [affiliation],
|
277
277
|
)
|
data/lib/relaton_nist/version.rb
CHANGED
@@ -3,8 +3,13 @@ module RelatonNist
|
|
3
3
|
class << self
|
4
4
|
def from_xml(xml)
|
5
5
|
doc = Nokogiri::XML xml
|
6
|
+
doc.remove_namespaces!
|
6
7
|
nistitem = doc.at("/bibitem|/bibdata")
|
7
|
-
|
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
|
8
13
|
end
|
9
14
|
|
10
15
|
private
|
data/relaton_nist.gemspec
CHANGED
@@ -23,18 +23,17 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.require_paths = ["lib"]
|
24
24
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.4.0")
|
25
25
|
|
26
|
-
spec.add_development_dependency "byebug"
|
27
26
|
spec.add_development_dependency "debase"
|
28
27
|
spec.add_development_dependency "equivalent-xml", "~> 0.6"
|
29
28
|
spec.add_development_dependency "pry-byebug"
|
30
29
|
spec.add_development_dependency "rake", "~> 10.0"
|
31
30
|
spec.add_development_dependency "rspec", "~> 3.0"
|
32
31
|
spec.add_development_dependency "ruby-debug-ide"
|
32
|
+
spec.add_development_dependency "ruby-jing"
|
33
33
|
spec.add_development_dependency "simplecov"
|
34
34
|
spec.add_development_dependency "vcr"
|
35
35
|
spec.add_development_dependency "webmock"
|
36
|
-
spec.add_development_dependency "ruby-jing"
|
37
36
|
|
38
|
-
spec.add_dependency "relaton-bib", "~> 0.
|
37
|
+
spec.add_dependency "relaton-bib", "~> 0.9.0"
|
39
38
|
spec.add_dependency "rubyzip"
|
40
39
|
end
|
metadata
CHANGED
@@ -1,29 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: relaton-nist
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.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: 2020-
|
11
|
+
date: 2020-04-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
-
- !ruby/object:Gem::Dependency
|
14
|
-
name: byebug
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - ">="
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '0'
|
20
|
-
type: :development
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - ">="
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: '0'
|
27
13
|
- !ruby/object:Gem::Dependency
|
28
14
|
name: debase
|
29
15
|
requirement: !ruby/object:Gem::Requirement
|
@@ -109,7 +95,7 @@ dependencies:
|
|
109
95
|
- !ruby/object:Gem::Version
|
110
96
|
version: '0'
|
111
97
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
98
|
+
name: ruby-jing
|
113
99
|
requirement: !ruby/object:Gem::Requirement
|
114
100
|
requirements:
|
115
101
|
- - ">="
|
@@ -123,7 +109,7 @@ dependencies:
|
|
123
109
|
- !ruby/object:Gem::Version
|
124
110
|
version: '0'
|
125
111
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
112
|
+
name: simplecov
|
127
113
|
requirement: !ruby/object:Gem::Requirement
|
128
114
|
requirements:
|
129
115
|
- - ">="
|
@@ -137,7 +123,7 @@ dependencies:
|
|
137
123
|
- !ruby/object:Gem::Version
|
138
124
|
version: '0'
|
139
125
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
126
|
+
name: vcr
|
141
127
|
requirement: !ruby/object:Gem::Requirement
|
142
128
|
requirements:
|
143
129
|
- - ">="
|
@@ -151,7 +137,7 @@ dependencies:
|
|
151
137
|
- !ruby/object:Gem::Version
|
152
138
|
version: '0'
|
153
139
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
140
|
+
name: webmock
|
155
141
|
requirement: !ruby/object:Gem::Requirement
|
156
142
|
requirements:
|
157
143
|
- - ">="
|
@@ -170,14 +156,14 @@ dependencies:
|
|
170
156
|
requirements:
|
171
157
|
- - "~>"
|
172
158
|
- !ruby/object:Gem::Version
|
173
|
-
version: 0.
|
159
|
+
version: 0.9.0
|
174
160
|
type: :runtime
|
175
161
|
prerelease: false
|
176
162
|
version_requirements: !ruby/object:Gem::Requirement
|
177
163
|
requirements:
|
178
164
|
- - "~>"
|
179
165
|
- !ruby/object:Gem::Version
|
180
|
-
version: 0.
|
166
|
+
version: 0.9.0
|
181
167
|
- !ruby/object:Gem::Dependency
|
182
168
|
name: rubyzip
|
183
169
|
requirement: !ruby/object:Gem::Requirement
|