commonmeta-ruby 3.0.2 → 3.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9b9a5c37f7800cb3eeee4bbe8a343562b5c3ea466a0fec8621af95c5132f749
4
- data.tar.gz: c50ad3cda6d44ee2f1e513c4e6ba36adb829d95bd2c07eb6e76b86f8ebbf2ddb
3
+ metadata.gz: a70c0df50b2df7309d1d0186f26bee70a258261c71b5c48f7874dfaaac70efc6
4
+ data.tar.gz: e612605bc58868dd138ad411a6fe0b51e9140f13055cd4ab537201ba885c29a0
5
5
  SHA512:
6
- metadata.gz: 1a3afb6655cef3dfc742e826ae43ff1cde17e8d852b9d2c3c465cd5a9ac8c1c8480dd0e81a888561acc4ea311dfd7968a150c2dabd04b09bb77dcef47632252d
7
- data.tar.gz: dc70555987515a2193c7dec735395fef12d9fa71ce9f1d70a621404ce947e2c8ec09f53c92fa5b7785a675e54d6854ab4b1674bb612514b21481548a873dcad9
6
+ metadata.gz: 1b8e7a6209e21f136ef26e30f4f2ce4295b65893f629104a1956c8fa2a936119bfd3f09d1d76c6c76c971529e575db3c162c5c703965d5785e632a72966cc180
7
+ data.tar.gz: 2f244277ad908343de1762267c7ed86083eacd63d3fa3f698a9fb87f60dde9a89de20ec66d12c123d0f6537190d0431659fe791aa1b48f56dbc18843806b43c9
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- commonmeta-ruby (3.0.2)
4
+ commonmeta-ruby (3.0.3)
5
5
  activesupport (>= 4.2.5, < 8.0)
6
6
  base32-url (>= 0.5.0, < 1)
7
7
  bibtex-ruby (~> 6.0)
@@ -18,7 +18,6 @@ PATH
18
18
  loofah (~> 2.19)
19
19
  namae (~> 1.0)
20
20
  postrank-uri (~> 1.1)
21
- public_suffix (~> 4.0, >= 4.0.7)
22
21
  rdf-rdfxml (~> 3.2)
23
22
  rdf-turtle (~> 3.2)
24
23
  thor (~> 1.1, >= 1.1.0)
data/commonmeta.gemspec CHANGED
@@ -34,7 +34,6 @@ Gem::Specification.new do |s|
34
34
  s.add_dependency 'loofah', '~> 2.19'
35
35
  s.add_dependency 'namae', '~> 1.0'
36
36
  s.add_dependency 'postrank-uri', '~> 1.1'
37
- s.add_dependency 'public_suffix', '~> 4.0', '>= 4.0.7'
38
37
  s.add_dependency 'rdf-rdfxml', '~> 3.2'
39
38
  s.add_dependency 'rdf-turtle', '~> 3.2'
40
39
  s.add_dependency 'thor', '~> 1.1', '>= 1.1.0'
@@ -157,9 +157,9 @@ module Commonmeta
157
157
  end
158
158
 
159
159
  # Catch errors in the reader
160
- # Then validate against JSON schema for DataCite v4
160
+ # Then validate against JSON schema for Commonmeta
161
161
  def errors
162
- meta.fetch('errors', nil) || json_schema_errors(schema_version: schema_version)
162
+ meta.fetch('errors', nil) || json_schema_errors
163
163
  end
164
164
 
165
165
  def descriptions
@@ -1,16 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'json_schemer'
4
- require 'pathname'
3
+ require "json_schemer"
4
+ require "pathname"
5
5
 
6
6
  module Commonmeta
7
7
  module SchemaUtils
8
- # DATACITE_V3 = schema = File.read(File.expand_path("../../resources/datacite-v3.json", __dir__))
9
- # DATACITE_V4 = schema = File.read(File.expand_path("../../resources/datacite-v4.json", __dir__))
10
- COMMONMETA = schema = File.read(File.expand_path('../../resources/commonmeta_v0.9.json',
11
- __dir__))
8
+ COMMONMETA = File.read(File.expand_path("../../resources/commonmeta_v0.9.1.json",
9
+ __dir__))
12
10
 
13
- def json_schema_errors(schema_version: nil)
11
+ def json_schema_errors
14
12
  schemer = JSONSchemer.schema(COMMONMETA)
15
13
  errors = schemer.validate(meta).to_a
16
14
  errors.map { |err| JSONSchemer::Errors.pretty err }.presence
@@ -1337,9 +1337,12 @@ module Commonmeta
1337
1337
  end
1338
1338
 
1339
1339
  def encode_doi(prefix)
1340
- random_int = SecureRandom.random_number(2**63..(2**64) - 1)
1341
- suffix = Base32::URL.encode(random_int)
1342
- str = "#{suffix[0, 7]}-#{suffix[6, 7]}"
1340
+ # DOI suffix is a generated from a random number, encoded in base32
1341
+ # suffix has 8 digits plus two checksum digits. With base32 there are
1342
+ # 32 possible digits, so 8 digits gives 32^8 possible combinations
1343
+ random_int = SecureRandom.random_number(32**7..(32**8) - 1)
1344
+ suffix = Base32::URL.encode(random_int, checksum: true)
1345
+ str = "#{suffix[0, 5]}-#{suffix[5, 10]}"
1343
1346
  "https://doi.org/#{prefix}/#{str}"
1344
1347
  end
1345
1348
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Commonmeta
4
- VERSION = '3.0.2'
4
+ VERSION = '3.0.3'
5
5
  end
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "http://json-schema.org/draft-07/schema#",
3
- "$id": "https://commonmeta.org/commonmeta_v0.9.json",
4
- "title": "Commonmeta v0.9",
3
+ "$id": "https://commonmeta.org/commonmeta_v0.9.1.json",
4
+ "title": "Commonmeta v0.9.1",
5
5
  "description": "JSON representation of the Commonmeta schema.",
6
6
  "additionalProperties": false,
7
7
  "definitions": {
@@ -17,11 +17,21 @@
17
17
  },
18
18
  "uniqueItems": true
19
19
  },
20
+ "latitude": {
21
+ "type": "number",
22
+ "minimum": -90,
23
+ "maximum": 90
24
+ },
25
+ "longitude": {
26
+ "type": "number",
27
+ "minimum": -180,
28
+ "maximum": 180
29
+ },
20
30
  "geoLocationPoint": {
21
31
  "type": "object",
22
32
  "properties": {
23
- "pointLongitude": { "type": "string", "format": "longitude" },
24
- "pointLatitude": { "type": "string", "format": "latitude" }
33
+ "pointLongitude": { "$ref": "#/definitions/longitude" },
34
+ "pointLatitude": { "$ref": "#/definitions/latitude" }
25
35
  },
26
36
  "required": ["pointLongitude", "pointLatitude"]
27
37
  }
@@ -318,10 +328,10 @@
318
328
  "geoLocationBox": {
319
329
  "type": "object",
320
330
  "properties": {
321
- "westBoundLongitude": { "type": "string", "format": "longitude" },
322
- "eastBoundLongitude": { "type": "string", "format": "longitude" },
323
- "southBoundLatitude": { "type": "string", "format": "latitude" },
324
- "northBoundLatitude": { "type": "string", "format": "latitude" }
331
+ "westBoundLongitude": { "$ref": "#/definitions/longitude" },
332
+ "eastBoundLongitude": { "$ref": "#/definitions/longitude" },
333
+ "southBoundLatitude": { "$ref": "#/definitions/latitude" },
334
+ "northBoundLatitude": { "$ref": "#/definitions/latitude" }
325
335
  },
326
336
  "required": [
327
337
  "westBoundLongitude",
data/spec/utils_spec.rb CHANGED
@@ -612,8 +612,9 @@ describe Commonmeta::Metadata, vcr: true do
612
612
  it 'encode doi' do
613
613
  prefix = '10.53731'
614
614
  response = subject.encode_doi(prefix)
615
- expect(response).to match(%r{#{prefix}/[-._;()/:A-Za-z0-9]+})
616
- expect(response.length).to eq(40)
615
+ puts response
616
+ expect(response).to match(%r{#{prefix}/[a-z0-9]+})
617
+ expect(response.length).to eq(36)
617
618
  end
618
619
 
619
620
  it 'decode doi' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commonmeta-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Martin Fenner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-03-20 00:00:00.000000000 Z
11
+ date: 2023-03-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -276,26 +276,6 @@ dependencies:
276
276
  - - "~>"
277
277
  - !ruby/object:Gem::Version
278
278
  version: '1.1'
279
- - !ruby/object:Gem::Dependency
280
- name: public_suffix
281
- requirement: !ruby/object:Gem::Requirement
282
- requirements:
283
- - - "~>"
284
- - !ruby/object:Gem::Version
285
- version: '4.0'
286
- - - ">="
287
- - !ruby/object:Gem::Version
288
- version: 4.0.7
289
- type: :runtime
290
- prerelease: false
291
- version_requirements: !ruby/object:Gem::Requirement
292
- requirements:
293
- - - "~>"
294
- - !ruby/object:Gem::Version
295
- version: '4.0'
296
- - - ">="
297
- - !ruby/object:Gem::Version
298
- version: 4.0.7
299
279
  - !ruby/object:Gem::Dependency
300
280
  name: rdf-rdfxml
301
281
  requirement: !ruby/object:Gem::Requirement
@@ -640,7 +620,7 @@ files:
640
620
  - lib/commonmeta/xml_converter.rb
641
621
  - resources/2008/09/xsd.xsl
642
622
  - resources/cff.json
643
- - resources/commonmeta_v0.9.json
623
+ - resources/commonmeta_v0.9.1.json
644
624
  - resources/crossref/AccessIndicators.xsd
645
625
  - resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd
646
626
  - resources/crossref/JATS-journalpublishing1-3d2-mathml3.xsd