relaton-bipm 1.13.4 → 1.13.6

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: 163a9f60eeb667aff478312eb3325fa8d89ac00f4ed11dda2d24be353c7dee38
4
- data.tar.gz: 5cc2a287138fe56e118ec4d3ef10b13d2da5568e69f186c9d303fa99fbe33b69
3
+ metadata.gz: aeddd651dcb48a277d10ad9351ba46351b7fe43eb8b136a359148d83a23ca7c0
4
+ data.tar.gz: 5b25f339d03c0278660b58a7b190e88e5a1c05ab0bcbec007fb8fdd6108efa7d
5
5
  SHA512:
6
- metadata.gz: e585b21ae150bda7dc70203d696f4bfd9e9903a3d0b7e66b1f73b0b86312a59c171b35ab0cfe1b9ab3bcf9bce6a02f496354d5df0c95d0aab4e1258e89936e77
7
- data.tar.gz: 425b7ff50a80c6e6971c1bccc42330f5785cdad5afff6632a08f4eec1271b7416514c9ed5c4a5468c15790d13138c43fe27e4dde03c1c688166bcaec6fc1da4f
6
+ metadata.gz: 3b913ce825a85cb4e751bb149422427f6828f009fe6324b08c18c25ab6573c0e365f266d7954940a79e63bacd8fb52ee81d37aa983749d1d0403c3fee0c1dcd1
7
+ data.tar.gz: 202619fe86dde21f5bfe8efb221177ab3cd078c4fcd57078b1584baf6609fed489d1c16e0d84b4fe5aa63bd88f59dd53b8b5d36c4d10931c6f57702c0b909ad0
data/README.adoc CHANGED
@@ -33,6 +33,14 @@ Or install it yourself as:
33
33
 
34
34
  === Search for a standard using keywords
35
35
 
36
+ The Metrologia website employs anti-DDoS protection, which may cause the search to fail. If this happens, open provided link in a browser and solve the captcha.
37
+
38
+ ----
39
+ [relaton-bipm] ("BIPM Metrologia 50 4 385") fetching...
40
+ [relaton-bipm] This source employs anti-DDoS measures that unfortunately affects automated requests.
41
+ [relaton-bipm] Please visit this link in your browser to resolve the CAPTCHA, then retry: https://iopscience.iop.org/article/10.1088/0026-1394/50/4/385
42
+ ----
43
+
36
44
  ==== References for Si-Brochure documents
37
45
 
38
46
  `BIPM {DOCUMENT_NAME}`
@@ -25,6 +25,7 @@ module RelatonBipm
25
25
  end
26
26
 
27
27
  warn("[relaton-bipm] (\"#{text}\") found #{item.docidentifier[0].id}")
28
+ item.fetched = Date.today.to_s
28
29
  item
29
30
  rescue Mechanize::ResponseCodeError => e
30
31
  raise RelatonBib::RequestError, e.message unless e.response_code == "404"
@@ -43,6 +44,7 @@ module RelatonBipm
43
44
  "Upgrade-Insecure-Requests" => "1",
44
45
  }
45
46
  a.user_agent_alias = Mechanize::AGENT_ALIASES.map(&:first).shuffle.first
47
+ # a.user_agent_alias = "Mac Safari"
46
48
  a
47
49
  end
48
50
 
@@ -226,8 +228,8 @@ module RelatonBipm
226
228
  link = rsp.at("//div[@class='indexer'][.='#{art}']/../div/a")
227
229
  unless link
228
230
  arts = rsp.xpath("//div[@class='indexer']").map(&:text)
229
- warn "[relaton-bipm] Page #{art} not found in \"BIPM Metrologia #{vol} #{ish}\" issue."
230
- warn "[relaton-bipm] Availabe pages in the issue are: (#{arts.join(', ')})"
231
+ warn "[relaton-bipm] No article is available at the specified start page \"#{art}\" in issue \"BIPM Metrologia #{vol} #{ish}\"."
232
+ warn "[relaton-bipm] Available articles in the issue start at the following pages: (#{arts.join(', ')})"
231
233
  return
232
234
  end
233
235
 
@@ -240,6 +242,7 @@ module RelatonBipm
240
242
  # @param agent [Mechanize]
241
243
  # @return [RelatonBipm::BipmBibliographicItem]
242
244
  def get_article(path, vol, ish, agent) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
245
+ agent.agent.allowed_error_codes = [403]
243
246
  rsp = agent.get path
244
247
  check_response rsp
245
248
  url = rsp.uri
@@ -304,15 +307,17 @@ module RelatonBipm
304
307
  # @param bibtex [BibTeX::Entry]
305
308
  # @return [Array<Hash>]
306
309
  def btcontrib(bibtex)
307
- surname, initial = bibtex.author.split ", "
308
- initial = initial.split.map { |i| RelatonBib::LocalizedString.new i, "en", "Latn" }
309
- surname = RelatonBib::LocalizedString.new surname, "en", "Latn"
310
- name = RelatonBib::FullName.new surname: surname, initial: initial
311
- author = RelatonBib::Person.new name: name
312
- [
313
- { entity: { name: bibtex.publisher.to_s }, role: [{ type: "publisher" }] },
314
- { entity: author, role: [{ type: "author" }] },
315
- ]
310
+ contribs = [{
311
+ entity: { name: bibtex.publisher.to_s }, role: [{ type: "publisher" }]
312
+ }]
313
+ return contribs unless bibtex.author
314
+
315
+ bibtex.author.split(" and ").inject(contribs) do |mem, name|
316
+ cname = RelatonBib::LocalizedString.new name, "en", "Latn"
317
+ name = RelatonBib::FullName.new completename: cname
318
+ author = RelatonBib::Person.new name: name
319
+ mem << { entity: author, role: [{ type: "author" }] }
320
+ end
316
321
  end
317
322
 
318
323
  #
@@ -353,7 +358,7 @@ module RelatonBipm
353
358
  warn "[relaton-bipm] Please visit this link in your browser to resolve the CAPTCHA, then retry: #{rsp.uri}"
354
359
  # warn "[relaton-bipm] #{rsp.uri} is redirected to #{rsp.header['location']}"
355
360
  raise RelatonBib::RequestError, "cannot access #{rsp.uri}"
356
- elsif rsp.code != "200"
361
+ elsif rsp.code != "200" && rsp.code != "403"
357
362
  warn "[read_bipm] can't acces #{rsp.uri} #{rsp.code}"
358
363
  raise RelatonBib::RequestError, "cannot acces #{rsp.uri} #{rsp.code}"
359
364
  end
@@ -68,7 +68,6 @@ module RelatonBipm
68
68
  doc = docstd.at "/bibdata"
69
69
  hash1 = RelatonBipm::XMLParser.from_xml(doc.to_xml).to_hash
70
70
  fix_si_brochure_id hash1
71
- hash1["fetched"] = Date.today.to_s
72
71
  outfile = File.join @output, File.basename(f).sub(/(?:-(?:en|fr))?\.rxl$/, ".yaml")
73
72
  @index[[hash1["docnumber"] || File.basename(outfile, ".yaml")]] = outfile
74
73
  hash = if File.exist? outfile
@@ -178,7 +177,7 @@ module RelatonBipm
178
177
  file = "#{num}.yaml"
179
178
  path = File.join dir, file
180
179
  link = "https://raw.githubusercontent.com/relaton/relaton-data-bipm/master/#{path}"
181
- hash = bibitem type: type, en: en_md, fr: fr_md, id: id, num: num, src: src, pdf: en["pdf"]
180
+ hash = bibitem body: body, type: type, en: en_md, fr: fr_md, id: id, num: num, src: src, pdf: en["pdf"]
182
181
  if @files.include?(path) && part
183
182
  add_part hash, part
184
183
  item = RelatonBipm::BipmBibliographicItem.new(**hash)
@@ -190,7 +189,7 @@ module RelatonBipm
190
189
  elsif part
191
190
  hash[:title].each { |t| t[:content] = t[:content].sub(/\s\(.+\)$/, "") }
192
191
  hash[:link] = [{ type: "src", content: link }]
193
- h = bibitem type: type, en: en_md, fr: fr_md, id: id, num: num, src: src, pdf: en["pdf"]
192
+ h = bibitem body: body, type: type, en: en_md, fr: fr_md, id: id, num: num, src: src, pdf: en["pdf"]
194
193
  add_part h, part
195
194
  part_item = RelatonBipm::BipmBibliographicItem.new(**h)
196
195
  part_item_path = File.join dir, "#{num}-#{part}.yaml"
@@ -219,7 +218,7 @@ module RelatonBipm
219
218
  def fetch_resolution(**args) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
220
219
  args[:en]["resolutions"].each.with_index do |r, i| # rubocop:disable Metrics/BlockLength
221
220
  hash = {
222
- type: "proceedings", fetched: Date.today.to_s, title: [],
221
+ type: "proceedings", title: [],
223
222
  doctype: r["type"], place: [RelatonBib::Place.new(city: "Paris")]
224
223
  }
225
224
  hash[:title] << title(r["title"], "en") if r["title"]
@@ -252,10 +251,7 @@ module RelatonBipm
252
251
  hash[:link] << { type: "pdf", content: r["reference"] } if r["reference"]
253
252
  hash[:language] = %w[en fr]
254
253
  hash[:script] = ["Latn"]
255
- hash[:contributor] = [{
256
- entity: { url: "www.bipm.org", name: "Bureau International des Poids et Mesures", abbreviation: "BIPM" },
257
- role: [{ type: "publisher" }],
258
- }]
254
+ hash[:contributor] = contributors date, args[:body]
259
255
  hash[:structuredidentifier] = RelatonBipm::StructuredIdentifier.new docnumber: num
260
256
  item = RelatonBipm::BipmBibliographicItem.new(**hash)
261
257
  file = year
@@ -269,6 +265,39 @@ module RelatonBipm
269
265
  end
270
266
  end
271
267
 
268
+ def contributors(date, body) # rubocop:disable Metrics/MethodLength
269
+ if body == "CCTF" && Date.parse(date).year < 1999
270
+ authors = [{
271
+ name: [
272
+ { content: "Consultative Committee for the Definition of the Second",
273
+ language: "en", script: "Latn" },
274
+ { content: "Comité Consultatif pour la Définition de la Seconde",
275
+ language: "fr", script: "Latn" },
276
+ ],
277
+ abbreviation: { content: "CCDS", language: ["en", "fr"], script: "Latn" },
278
+ }]
279
+ elsif body == "CCTF"
280
+ authors = [{
281
+ name: [
282
+ { content: "Consultative Committee for Time and Frequency",
283
+ language: "en", script: "Latn" },
284
+ { content: "Comité consultatif du temps et des fréquences",
285
+ language: "fr", script: "Latn" },
286
+ ],
287
+ abbreviation: { content: body, language: ["en", "fr"], script: "Latn" },
288
+ }]
289
+ else authors = []
290
+ end
291
+ authors.reduce(
292
+ [{ entity: {
293
+ url: "www.bipm.org",
294
+ name: "Bureau International des Poids et Mesures",
295
+ abbreviation: "BIPM",
296
+ },
297
+ role: [{ type: "publisher" }] }],
298
+ ) { |a, e| a << { entity: e, role: [{ type: "author" }] } }
299
+ end
300
+
272
301
  def title(content, language)
273
302
  { content: content, language: language, script: "Latn" }
274
303
  end
@@ -304,7 +333,7 @@ module RelatonBipm
304
333
  #
305
334
  def bibitem(**args) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
306
335
  hash = { title: [], type: "proceedings", doctype: args[:type],
307
- fetched: Date.today.to_s, place: [RelatonBib::Place.new(city: "Paris")] }
336
+ place: [RelatonBib::Place.new(city: "Paris")] }
308
337
  hash[:title] << title(args[:en]["title"], "en") if args[:en]["title"]
309
338
  hash[:title] << title(args[:fr]["title"], "fr") if args[:fr]["title"]
310
339
  hash[:date] = [{ type: "published", on: args[:en]["date"] }]
@@ -320,10 +349,7 @@ module RelatonBipm
320
349
  hash[:link] += args[:src] if args[:src]&.any?
321
350
  hash[:language] = %w[en fr]
322
351
  hash[:script] = ["Latn"]
323
- hash[:contributor] = [{
324
- entity: { url: "www.bipm.org", name: "Bureau International des Poids et Mesures", abbreviation: "BIPM" },
325
- role: [{ type: "publisher" }],
326
- }]
352
+ hash[:contributor] = contributors args[:en]["date"], args[:body]
327
353
  hash[:structuredidentifier] = RelatonBipm::StructuredIdentifier.new docnumber: args[:num]
328
354
  hash
329
355
  end
@@ -1,3 +1,3 @@
1
1
  module RelatonBipm
2
- VERSION = "1.13.4".freeze
2
+ VERSION = "1.13.6".freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: relaton-bipm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.4
4
+ version: 1.13.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-09-04 00:00:00.000000000 Z
11
+ date: 2022-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: byebug