relaton-iso 1.5.0 → 1.6.pre1

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: 8238914d2b7ec4d2bc0825eb915f9cfa0f902530b825a7e26fbe6c3034cc3a77
4
- data.tar.gz: 0d3f40d3e1961da0ee55af73b316824cf5706c4e4bb0e5d44514307049f4b01f
3
+ metadata.gz: 9633da24028b24feabd31b81e93ee19e2af47994b26305d7c023aecc3ca9a090
4
+ data.tar.gz: 910de158883fc2f7cff8c36c4d78cd44fdf7f6d0f215096e0375b4a96389dcff
5
5
  SHA512:
6
- metadata.gz: 1788fa153b924357d86d5430a147d32da9e4a036a58179cbbe2057e0cb8c13567e9d78a3668fc4114e7233fb3f1a208a3dbb26080e0b0b90e430727e1ccab1dc
7
- data.tar.gz: e4e5c01f048d6b51638429d4bad4200ae0a4b964e67a2ff14389365a6d3e398b541301d11f26dc3053362f4f6ba11b22d66b2aa7df9385aa054569cd4939f480
6
+ metadata.gz: 0d413b2093884a16461db0a7358835f2279d8b227f54469caaf5bd215fa9a270f419844678359471fa16c9d7968e0339177ce37326113ebb7b6e88bc933a1115
7
+ data.tar.gz: 5c883c4a58a857589ad9019507a87e68a137b3df605bd24e3d21a563b0796e5c0f56981515ec72f46dd7769c6504178758c9abcc0640b0b960c2c7c9f00bd7f3
@@ -26,6 +26,8 @@ jobs:
26
26
  - name: Update gems
27
27
  run: |
28
28
  sudo gem install bundler --force
29
+ ruby -v | grep 2.5 && bundle config set build.debase --with-cflags="-Wno-error=implicit-function-declaration"
30
+ ruby -v | grep 2.5 && bundle config set build.ruby-debug-ide --with-cflags="-Wno-error=implicit-function-declaration"
29
31
  bundle install --jobs 4 --retry 3
30
32
  - name: Run specs
31
33
  run: |
@@ -44,10 +44,16 @@ module RelatonIso
44
44
  year = year2 || year1
45
45
  end
46
46
  end
47
- opts[:all_parts] ||= code !~ %r{^[^\s]+\s\d+-\d+} && opts[:all_parts].nil? && code2.nil?
48
- return RelatonIec::IecBibliography.get(code, year, opts) if %r[^ISO/IEC DIR] =~ code
47
+ %r{\s(?<num>\d+)(-(?<part>[\d-]+))?} =~ code
48
+ opts[:part] = part
49
+ opts[:num] = num
50
+ opts[:corr] = corr
51
+ opts[:all_parts] ||= !part && opts[:all_parts].nil? && code2.nil?
52
+ if %r[^ISO/IEC DIR].match? code
53
+ return RelatonIec::IecBibliography.get(code, year, opts)
54
+ end
49
55
 
50
- ret = isobib_get1(code, year, corr, opts)
56
+ ret = isobib_get1(code, year, opts)
51
57
  return nil if ret.nil?
52
58
 
53
59
  if year || opts[:keep_year] || opts[:all_parts]
@@ -65,15 +71,18 @@ module RelatonIso
65
71
  id = year ? "#{code}:#{year}" : code
66
72
  warn "[relaton-iso] WARNING: no match found online for #{id}. "\
67
73
  "The code must be exactly like it is on the standards website."
68
- warn "[relaton-iso] (There was no match for #{year}, though there were matches "\
69
- "found for #{missed_years.join(', ')}.)" unless missed_years.empty?
70
- if /\d-\d/ =~ code
71
- warn "[relaton-iso] The provided document part may not exist, or the document "\
72
- "may no longer be published in parts."
74
+ unless missed_years.empty?
75
+ warn "[relaton-iso] (There was no match for #{year}, though there "\
76
+ "were matches found for #{missed_years.join(', ')}.)"
77
+ end
78
+ if /\d-\d/.match? code
79
+ warn "[relaton-iso] The provided document part may not exist, "\
80
+ "or the document may no longer be published in parts."
73
81
  else
74
- warn "[relaton-iso] If you wanted to cite all document parts for the reference, "\
75
- "use \"#{code} (all parts)\".\nIf the document is not a standard, "\
76
- "use its document type abbreviation (TS, TR, PAS, Guide)."
82
+ warn "[relaton-iso] If you wanted to cite all document parts for "\
83
+ "the reference, use \"#{code} (all parts)\".\nIf the document is "\
84
+ "not a standard, use its document type abbreviation (TS, TR, PAS, "\
85
+ "Guide)."
77
86
  end
78
87
  nil
79
88
  end
@@ -83,66 +92,74 @@ module RelatonIso
83
92
  # Search for hits. If no found then trying missed stages and ISO/IEC.
84
93
  #
85
94
  # @param code [String] reference without correction
86
- # @param corr [String] correction
95
+ # @param opts [Hash]
87
96
  # @return [Array<RelatonIso::Hit>]
88
- def isobib_search_filter(code, corr, opts)
97
+ def isobib_search_filter(code, opts)
89
98
  warn "[relaton-iso] (\"#{opts[:ref]}\") fetching..."
90
99
  result = search(code)
91
- res = search_code result, code, corr, opts
100
+ res = search_code result, code, opts
92
101
  return res unless res.empty?
93
102
 
94
103
  # try stages
95
104
  if %r{^\w+/[^/]+\s\d+} =~ code # code like ISO/IEC 123, ISO/IEC/IEE 123
96
- res = try_stages(result, corr, opts) do |st|
105
+ res = try_stages(result, opts) do |st|
97
106
  code.sub(%r{^(?<pref>[^\s]+\s)}) { "#{$~[:pref]}#{st} " }
98
107
  end
99
108
  return res unless res.empty?
100
109
  elsif %r{^\w+\s\d+} =~ code # code like ISO 123
101
- res = try_stages(result, corr, opts) do |st|
110
+ res = try_stages(result, opts) do |st|
102
111
  code.sub(%r{^(?<pref>\w+)}) { "#{$~[:pref]}/#{st}" }
103
112
  end
104
113
  return res unless res.empty?
105
114
  end
106
115
 
107
- if %r{^ISO\s} =~ code # try ISO/IEC if ISO not found
116
+ if %r{^ISO\s}.match? code # try ISO/IEC if ISO not found
108
117
  warn "[relaton-iso] Attempting ISO/IEC retrieval"
109
118
  c = code.sub "ISO", "ISO/IEC"
110
- res = search_code result, c, corr, opts
119
+ res = search_code result, c, opts
111
120
  end
112
121
  res
113
122
  end
114
123
  # rubocop:enable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
115
124
 
116
125
  # @param result [RelatonIso::HitCollection]
117
- # @param corr [String] correction
118
126
  # @param opts [Hash]
119
- def try_stages(result, corr, opts)
127
+ # @return [RelatonIso::HitCollection]
128
+ def try_stages(result, opts)
120
129
  res = nil
121
130
  %w[NP WD CD DIS FDIS PRF IS AWI TR].each do |st| # try stages
122
131
  c = yield st
123
- res = search_code result, c, corr, opts
132
+ res = search_code result, c, opts
124
133
  return res unless res.empty?
125
134
  end
126
135
  res
127
136
  end
128
137
 
129
- def search_code(result, code, corr, opts)
138
+ # @param result [RelatonIso::HitCollection]
139
+ # @param code [String]
140
+ # @param opts [Hash]
141
+ # @return [RelatonIso::HitCollection]
142
+ def search_code(result, code, opts) # rubocop:disable Metrics/AbcSize,Metrics/CyclomaticComplexity
143
+ ref_regex = %r{^#{code}(?!-)}
144
+ corr_regex = %r{^#{code}[\w-]*(:\d{4})?/#{opts[:corr]}}
145
+ no_corr_regex = %r{^#{code}[\w-]*(:\d{4})?/}
130
146
  result.select do |i|
131
- (opts[:all_parts] || i.hit["docRef"] =~ %r{^#{code}(?!-)}) && (
132
- corr && %r{^#{code}[\w-]*(:\d{4})?/#{corr}} =~ i.hit["docRef"] ||
133
- !corr && %r{^#{code}[\w-]*(:\d{4})?/} !~ i.hit["docRef"]
134
- ) # && %r{^#{code}} =~ i.hit["docRef"]
147
+ (opts[:all_parts] || i.hit["docRef"] =~ ref_regex) && (
148
+ opts[:corr] && corr_regex =~ i.hit["docRef"] ||
149
+ !opts[:corr] && no_corr_regex !~ i.hit["docRef"]
150
+ )
135
151
  end
136
152
  end
137
153
 
138
154
  # rubocop:disable Metrics/AbcSize, Metrics/CyclomaticComplexity, Metrics/MethodLength, Metrics/PerceivedComplexity
139
155
 
140
156
  # Sort through the results from RelatonIso, fetching them three at a time,
141
- # and return the first result that matches the code,
142
- # matches the year (if provided), and which # has a title (amendments do not).
157
+ # and return the first result that matches the code, matches the year
158
+ # (if provided), and which # has a title (amendments do not).
143
159
  # Only expects the first page of results to be populated.
144
160
  # Does not match corrigenda etc (e.g. ISO 3166-1:2006/Cor 1:2007)
145
- # If no match, returns any years which caused mismatch, for error reporting
161
+ # If no match, returns any years which caused mismatch, for error
162
+ # reporting
146
163
  def isobib_results_filter(result, year, opts)
147
164
  missed_years = []
148
165
  hits = result.reduce!([]) do |hts, h|
@@ -155,7 +172,9 @@ module RelatonIso
155
172
  end
156
173
  return { years: missed_years } unless hits.any?
157
174
 
158
- return { ret: hits.first.fetch(opts[:lang]) } if !opts[:all_parts] || hits.size == 1
175
+ if !opts[:all_parts] || hits.size == 1
176
+ return { ret: hits.first.fetch(opts[:lang]) }
177
+ end
159
178
 
160
179
  { ret: hits.to_all_parts(opts[:lang]) }
161
180
  end
@@ -163,11 +182,10 @@ module RelatonIso
163
182
 
164
183
  # @param code [String]
165
184
  # @param year [String, NilClass]
166
- # @param corr [String, NilClass]
167
185
  # @param opts [Hash]
168
- def isobib_get1(code, year, corr, opts)
186
+ def isobib_get1(code, year, opts)
169
187
  # return iev(code) if /^IEC 60050-/.match code
170
- result = isobib_search_filter(code, corr, opts) || return
188
+ result = isobib_search_filter(code, opts) || return
171
189
  ret = isobib_results_filter(result, year, opts)
172
190
  if ret[:ret]
173
191
  warn "[relaton-iso] (\"#{opts[:ref]}\") found #{ret[:ret].docidentifier.first.id}"
@@ -162,7 +162,7 @@ module RelatonIso
162
162
  [Nokogiri::HTML(resp.body), url]
163
163
  rescue SocketError, Timeout::Error, Errno::EINVAL, Errno::ECONNRESET,
164
164
  EOFError, Net::HTTPBadResponse, Net::HTTPHeaderSyntaxError,
165
- Net::ProtocolError, OpenSSL::SSL::SSLError, Errno::ETIMEDOUT
165
+ Net::ProtocolError, Errno::ETIMEDOUT
166
166
  raise RelatonBib::RequestError, "Could not access #{url}"
167
167
  end
168
168
  # rubocop:enable Metrics/AbcSize, Metrics/MethodLength
@@ -394,7 +394,8 @@ module RelatonIso
394
394
  links << { type: "obp", content: obp[:href] } if obp
395
395
  rss = doc.at("//a[contains(@href, 'rss')]")
396
396
  links << { type: "rss", content: DOMAIN + rss[:href] } if rss
397
- pub = doc.at "//p[contains(., 'publicly available')]/a"
397
+ pub = doc.at "//p[contains(., 'publicly available')]/a",
398
+ "//p[contains(., 'can be downloaded from the')]/a"
398
399
  links << { type: "pub", content: pub[:href] } if pub
399
400
  links
400
401
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RelatonIso
4
- VERSION = "1.5.0"
4
+ VERSION = "1.6.pre1"
5
5
  end
@@ -37,6 +37,6 @@ Gem::Specification.new do |spec|
37
37
  spec.add_development_dependency "vcr"
38
38
  spec.add_development_dependency "webmock"
39
39
 
40
- spec.add_dependency "relaton-iec", "~> 1.5.0"
41
- spec.add_dependency "relaton-iso-bib", "~> 1.5.0"
40
+ spec.add_dependency "relaton-iec", "~> 1.6.pre"
41
+ spec.add_dependency "relaton-iso-bib", "~> 1.6.pre"
42
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-iso
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.0
4
+ version: 1.6.pre1
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-10-09 00:00:00.000000000 Z
11
+ date: 2020-11-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug
@@ -156,28 +156,28 @@ dependencies:
156
156
  requirements:
157
157
  - - "~>"
158
158
  - !ruby/object:Gem::Version
159
- version: 1.5.0
159
+ version: 1.6.pre
160
160
  type: :runtime
161
161
  prerelease: false
162
162
  version_requirements: !ruby/object:Gem::Requirement
163
163
  requirements:
164
164
  - - "~>"
165
165
  - !ruby/object:Gem::Version
166
- version: 1.5.0
166
+ version: 1.6.pre
167
167
  - !ruby/object:Gem::Dependency
168
168
  name: relaton-iso-bib
169
169
  requirement: !ruby/object:Gem::Requirement
170
170
  requirements:
171
171
  - - "~>"
172
172
  - !ruby/object:Gem::Version
173
- version: 1.5.0
173
+ version: 1.6.pre
174
174
  type: :runtime
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - "~>"
179
179
  - !ruby/object:Gem::Version
180
- version: 1.5.0
180
+ version: 1.6.pre
181
181
  description: 'RelatonIso: retrieve ISO Standards for bibliographic use using the IsoBibliographicItem
182
182
  model'
183
183
  email:
@@ -236,9 +236,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
236
236
  version: 2.4.0
237
237
  required_rubygems_version: !ruby/object:Gem::Requirement
238
238
  requirements:
239
- - - ">="
239
+ - - ">"
240
240
  - !ruby/object:Gem::Version
241
- version: '0'
241
+ version: 1.3.1
242
242
  requirements: []
243
243
  rubygems_version: 3.0.6
244
244
  signing_key: