commonmeta-ruby 3.0.2 → 3.0.4

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: 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