commonmeta-ruby 3.0.2 → 3.0.4

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: a7dd4130cd421b4e718c9d7ca6e407ff77eb58f10986091baa4dbf1403a0dafc
4
+ data.tar.gz: 2874c557642143804692c1702bd0487df4b4d73406af8380b445f01a77e00cde
5
5
  SHA512:
6
- metadata.gz: 1a3afb6655cef3dfc742e826ae43ff1cde17e8d852b9d2c3c465cd5a9ac8c1c8480dd0e81a888561acc4ea311dfd7968a150c2dabd04b09bb77dcef47632252d
7
- data.tar.gz: dc70555987515a2193c7dec735395fef12d9fa71ce9f1d70a621404ce947e2c8ec09f53c92fa5b7785a675e54d6854ab4b1674bb612514b21481548a873dcad9
6
+ metadata.gz: 062e9794c287d3dbde5d47f1397ba9e52a33be50d6163bac7d33843390a3d7a9855b976aa438853a8844a8980bc2b8e83568332f386f7496e8d6abb434635bb5
7
+ data.tar.gz: db93cb2e83be946d89ccae9ed6c13103b2d971af7155734f94750194d3f423a6747b629af03bbae40e45200b1185b383e28d104f316de838669210c1c366c1eb
data/.gitignore CHANGED
@@ -10,9 +10,6 @@
10
10
  /test/version_tmp/
11
11
  /tmp/
12
12
 
13
- # Used by dotenv library to load environment variables.
14
- # .env
15
-
16
13
  ## Specific to RubyMotion:
17
14
  .dat*
18
15
  .repl_history
@@ -50,10 +47,6 @@ build-iPhoneSimulator/
50
47
  .rvmrc
51
48
 
52
49
  coverage/
53
- .env
54
- .env.*
55
- !.env.example
56
- !.env.travis
57
50
 
58
51
  .vscode
59
52
  .dccache
data/Gemfile.lock CHANGED
@@ -1,14 +1,13 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- commonmeta-ruby (3.0.2)
4
+ commonmeta-ruby (3.0.4)
5
5
  activesupport (>= 4.2.5, < 8.0)
6
6
  base32-url (>= 0.5.0, < 1)
7
7
  bibtex-ruby (~> 6.0)
8
8
  builder (~> 3.2, >= 3.2.4)
9
9
  citeproc-ruby (~> 2.0)
10
10
  csl-styles (~> 2.0)
11
- dotenv (~> 2.1, >= 2.1.1)
12
11
  edtf (~> 3.0, >= 3.0.4)
13
12
  gender_detector (~> 2.0)
14
13
  http (~> 5.1, >= 5.1.1)
@@ -18,7 +17,6 @@ PATH
18
17
  loofah (~> 2.19)
19
18
  namae (~> 1.0)
20
19
  postrank-uri (~> 1.1)
21
- public_suffix (~> 4.0, >= 4.0.7)
22
20
  rdf-rdfxml (~> 3.2)
23
21
  rdf-turtle (~> 3.2)
24
22
  thor (~> 1.1, >= 1.1.0)
@@ -58,7 +56,6 @@ GEM
58
56
  docile (1.4.0)
59
57
  domain_name (0.5.20190701)
60
58
  unf (>= 0.0.5, < 1.0.0)
61
- dotenv (2.8.1)
62
59
  ebnf (2.3.2)
63
60
  htmlentities (~> 4.3)
64
61
  rdf (~> 3.2)
data/commonmeta.gemspec CHANGED
@@ -24,7 +24,6 @@ Gem::Specification.new do |s|
24
24
  s.add_dependency 'builder', '~> 3.2', '>= 3.2.4'
25
25
  s.add_dependency 'citeproc-ruby', '~> 2.0'
26
26
  s.add_dependency 'csl-styles', '~> 2.0'
27
- s.add_dependency 'dotenv', '~> 2.1', '>= 2.1.1'
28
27
  s.add_dependency 'edtf', '~> 3.0', '>= 3.0.4'
29
28
  s.add_dependency 'gender_detector', '~> 2.0'
30
29
  s.add_dependency 'http', '~> 5.1', '>= 5.1.1'
@@ -34,7 +33,6 @@ Gem::Specification.new do |s|
34
33
  s.add_dependency 'loofah', '~> 2.19'
35
34
  s.add_dependency 'namae', '~> 1.0'
36
35
  s.add_dependency 'postrank-uri', '~> 1.1'
37
- s.add_dependency 'public_suffix', '~> 4.0', '>= 4.0.7'
38
36
  s.add_dependency 'rdf-rdfxml', '~> 3.2'
39
37
  s.add_dependency 'rdf-turtle', '~> 3.2'
40
38
  s.add_dependency 'thor', '~> 1.1', '>= 1.1.0'
@@ -41,6 +41,7 @@ module Commonmeta
41
41
  style: options[:style],
42
42
  locale: options[:locale],
43
43
  show_errors: options[:show_errors],
44
+ doi: options[:doi],
44
45
  depositor: options[:depositor],
45
46
  email: options[:email],
46
47
  registrant: options[:registrant])
@@ -2,9 +2,8 @@
2
2
 
3
3
  module Commonmeta
4
4
  module CrossrefUtils
5
- # To configure the writing of Crossref metadata, use environmental
6
- # variables CROSSREF_DEPOSITOR_NAME, CROSSREF_DEPOSITOR_EMAIL and CROSSREF_REGISTRANT,
7
- # e.g. in a .env file
5
+ # To configure the writing of Crossref metadata, provide the following variables
6
+ # depositor, email, and registrant
8
7
  def write_crossref_xml
9
8
  @crossref_xml ||= Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
10
9
  xml.doi_batch(crossref_root_attributes) do
@@ -13,10 +12,10 @@ module Commonmeta
13
12
  xml.doi_batch_id(SecureRandom.uuid)
14
13
  xml.timestamp(Time.now.utc.strftime('%Y%m%d%H%M%S'))
15
14
  xml.depositor do
16
- xml.depositor_name(ENV.fetch('CROSSREF_DEPOSITOR_NAME', nil))
17
- xml.email_address(ENV.fetch('CROSSREF_DEPOSITOR_EMAIL', nil))
15
+ xml.depositor_name(depositor)
16
+ xml.email_address(email)
18
17
  end
19
- xml.registrant(ENV.fetch('CROSSREF_REGISTRANT', nil))
18
+ xml.registrant(registrant)
20
19
  end
21
20
  xml.body do
22
21
  insert_crossref_work(xml)
@@ -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.4'
5
5
  end
data/lib/commonmeta.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'dotenv/load'
4
3
  require 'active_support/all'
5
4
  require 'nokogiri'
6
5
  ActiveSupport::XmlMini.backend = 'Nokogiri'
@@ -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,8 @@ 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
+ expect(response).to match(%r{#{prefix}/[a-z0-9]+})
616
+ expect(response.length).to eq(36)
617
617
  end
618
618
 
619
619
  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.4
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
@@ -112,26 +112,6 @@ dependencies:
112
112
  - - "~>"
113
113
  - !ruby/object:Gem::Version
114
114
  version: '2.0'
115
- - !ruby/object:Gem::Dependency
116
- name: dotenv
117
- requirement: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - "~>"
120
- - !ruby/object:Gem::Version
121
- version: '2.1'
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: 2.1.1
125
- type: :runtime
126
- prerelease: false
127
- version_requirements: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '2.1'
132
- - - ">="
133
- - !ruby/object:Gem::Version
134
- version: 2.1.1
135
115
  - !ruby/object:Gem::Dependency
136
116
  name: edtf
137
117
  requirement: !ruby/object:Gem::Requirement
@@ -276,26 +256,6 @@ dependencies:
276
256
  - - "~>"
277
257
  - !ruby/object:Gem::Version
278
258
  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
259
  - !ruby/object:Gem::Dependency
300
260
  name: rdf-rdfxml
301
261
  requirement: !ruby/object:Gem::Requirement
@@ -640,7 +600,7 @@ files:
640
600
  - lib/commonmeta/xml_converter.rb
641
601
  - resources/2008/09/xsd.xsl
642
602
  - resources/cff.json
643
- - resources/commonmeta_v0.9.json
603
+ - resources/commonmeta_v0.9.1.json
644
604
  - resources/crossref/AccessIndicators.xsd
645
605
  - resources/crossref/JATS-journalpublishing1-3d2-mathml3-elements.xsd
646
606
  - resources/crossref/JATS-journalpublishing1-3d2-mathml3.xsd