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 +4 -4
- data/.gitignore +0 -7
- data/Gemfile.lock +1 -4
- data/commonmeta.gemspec +0 -2
- data/lib/commonmeta/cli.rb +1 -0
- data/lib/commonmeta/crossref_utils.rb +5 -6
- data/lib/commonmeta/metadata.rb +2 -2
- data/lib/commonmeta/schema_utils.rb +5 -7
- data/lib/commonmeta/utils.rb +6 -3
- data/lib/commonmeta/version.rb +1 -1
- data/lib/commonmeta.rb +0 -1
- data/resources/{commonmeta_v0.9.json → commonmeta_v0.9.1.json} +18 -8
- data/spec/utils_spec.rb +2 -2
- metadata +3 -43
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7dd4130cd421b4e718c9d7ca6e407ff77eb58f10986091baa4dbf1403a0dafc
|
4
|
+
data.tar.gz: 2874c557642143804692c1702bd0487df4b4d73406af8380b445f01a77e00cde
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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.
|
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'
|
data/lib/commonmeta/cli.rb
CHANGED
@@ -2,9 +2,8 @@
|
|
2
2
|
|
3
3
|
module Commonmeta
|
4
4
|
module CrossrefUtils
|
5
|
-
# To configure the writing of Crossref metadata,
|
6
|
-
#
|
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(
|
17
|
-
xml.email_address(
|
15
|
+
xml.depositor_name(depositor)
|
16
|
+
xml.email_address(email)
|
18
17
|
end
|
19
|
-
xml.registrant(
|
18
|
+
xml.registrant(registrant)
|
20
19
|
end
|
21
20
|
xml.body do
|
22
21
|
insert_crossref_work(xml)
|
data/lib/commonmeta/metadata.rb
CHANGED
@@ -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
|
160
|
+
# Then validate against JSON schema for Commonmeta
|
161
161
|
def errors
|
162
|
-
meta.fetch('errors', nil) || json_schema_errors
|
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
|
4
|
-
require
|
3
|
+
require "json_schemer"
|
4
|
+
require "pathname"
|
5
5
|
|
6
6
|
module Commonmeta
|
7
7
|
module SchemaUtils
|
8
|
-
|
9
|
-
|
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
|
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
|
data/lib/commonmeta/utils.rb
CHANGED
@@ -1337,9 +1337,12 @@ module Commonmeta
|
|
1337
1337
|
end
|
1338
1338
|
|
1339
1339
|
def encode_doi(prefix)
|
1340
|
-
|
1341
|
-
suffix
|
1342
|
-
|
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
|
|
data/lib/commonmeta/version.rb
CHANGED
data/lib/commonmeta.rb
CHANGED
@@ -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": { "
|
24
|
-
"pointLatitude": { "
|
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": { "
|
322
|
-
"eastBoundLongitude": { "
|
323
|
-
"southBoundLatitude": { "
|
324
|
-
"northBoundLatitude": { "
|
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}/[
|
616
|
-
expect(response.length).to eq(
|
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.
|
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-
|
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
|