ro-crate 0.4.17 → 0.5.0
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 +4 -4
- data/.github/workflows/tests.yml +1 -1
- data/.ruby-version +1 -1
- data/Gemfile.lock +6 -4
- data/lib/ro_crate/model/crate.rb +14 -13
- data/lib/ro_crate/model/entity.rb +1 -1
- data/lib/ro_crate/reader.rb +1 -1
- data/ro_crate.gemspec +3 -2
- data/test/crate_test.rb +2 -1
- metadata +19 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aa3bf8a8cdaa985143e1e2988d4fc24e14aad40bfd55763b4be17af23c8fa36a
|
4
|
+
data.tar.gz: 190326475ec90f7328e86252dd4f0c1150750ba8298fef7ba8337291ae988e21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7cf568838eba39df6ff3770456a8f2133efe8797d1b916b0acf4523f1830623120e14e3a3e8d3e5bbbf09d7960fe5afc585389010ab674394cc80b3c944363d7
|
7
|
+
data.tar.gz: 151807e2411c7d7d09ef2930f75b1eca9f1274fce14ca28d084c7b609268defc70803832697d79b68b9efe282ed63b0af1b179fd1cb0de2dba641798b331afe9
|
data/.github/workflows/tests.yml
CHANGED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-
|
1
|
+
ruby-3.0.4
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ro-crate (0.
|
4
|
+
ro-crate (0.5.0)
|
5
5
|
addressable (>= 2.7, < 2.9)
|
6
6
|
rubyzip (~> 2.0.0)
|
7
7
|
|
@@ -14,9 +14,10 @@ GEM
|
|
14
14
|
safe_yaml (~> 1.0.0)
|
15
15
|
docile (1.3.5)
|
16
16
|
hashdiff (1.0.1)
|
17
|
-
power_assert (
|
17
|
+
power_assert (2.0.1)
|
18
18
|
public_suffix (4.0.6)
|
19
19
|
rake (13.0.0)
|
20
|
+
rexml (3.2.5)
|
20
21
|
rubyzip (2.0.0)
|
21
22
|
safe_yaml (1.0.5)
|
22
23
|
simplecov (0.21.2)
|
@@ -25,7 +26,7 @@ GEM
|
|
25
26
|
simplecov_json_formatter (~> 0.1)
|
26
27
|
simplecov-html (0.12.3)
|
27
28
|
simplecov_json_formatter (0.1.2)
|
28
|
-
test-unit (3.
|
29
|
+
test-unit (3.5.3)
|
29
30
|
power_assert
|
30
31
|
webmock (3.8.3)
|
31
32
|
addressable (>= 2.3.6)
|
@@ -38,9 +39,10 @@ PLATFORMS
|
|
38
39
|
|
39
40
|
DEPENDENCIES
|
40
41
|
rake (~> 13.0.0)
|
42
|
+
rexml (~> 3.2.5)
|
41
43
|
ro-crate!
|
42
44
|
simplecov (~> 0.21.2)
|
43
|
-
test-unit (~> 3.
|
45
|
+
test-unit (~> 3.5.3)
|
44
46
|
webmock (~> 3.8.3)
|
45
47
|
yard (~> 0.9.25)
|
46
48
|
|
data/lib/ro_crate/model/crate.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'set'
|
2
|
+
|
1
3
|
module ROCrate
|
2
4
|
##
|
3
5
|
# A Ruby abstraction of an RO-Crate.
|
@@ -20,8 +22,8 @@ module ROCrate
|
|
20
22
|
##
|
21
23
|
# Initialize an empty RO-Crate.
|
22
24
|
def initialize(id = IDENTIFIER, properties = {})
|
23
|
-
@data_entities =
|
24
|
-
@contextual_entities =
|
25
|
+
@data_entities = Set.new
|
26
|
+
@contextual_entities = Set.new
|
25
27
|
super(self, nil, id, properties)
|
26
28
|
end
|
27
29
|
|
@@ -144,8 +146,8 @@ module ROCrate
|
|
144
146
|
# @return [Entity] the entity itself, or a clone of the entity "owned" by this crate.
|
145
147
|
def add_contextual_entity(entity)
|
146
148
|
entity = claim(entity)
|
147
|
-
contextual_entities.delete(entity) # Remove (then re-add) the entity if it exists
|
148
|
-
contextual_entities.
|
149
|
+
contextual_entities.delete?(entity) # Remove (then re-add) the entity if it exists
|
150
|
+
contextual_entities.add(entity)
|
149
151
|
entity
|
150
152
|
end
|
151
153
|
|
@@ -156,8 +158,8 @@ module ROCrate
|
|
156
158
|
# @return [Entity] the entity itself, or a clone of the entity "owned" by this crate.
|
157
159
|
def add_data_entity(entity)
|
158
160
|
entity = claim(entity)
|
159
|
-
data_entities.delete(entity) # Remove (then re-add) the entity if it exists
|
160
|
-
data_entities.
|
161
|
+
data_entities.delete?(entity) # Remove (then re-add) the entity if it exists
|
162
|
+
data_entities.add(entity)
|
161
163
|
entity
|
162
164
|
end
|
163
165
|
|
@@ -189,7 +191,7 @@ module ROCrate
|
|
189
191
|
##
|
190
192
|
# All the entities within the crate. Includes contextual entities, data entities, the crate itself and its metadata file.
|
191
193
|
#
|
192
|
-
# @return [
|
194
|
+
# @return [Set<Entity>]
|
193
195
|
def entities
|
194
196
|
default_entities | data_entities | contextual_entities
|
195
197
|
end
|
@@ -197,9 +199,9 @@ module ROCrate
|
|
197
199
|
##
|
198
200
|
# Entities for the metadata file and crate itself, which should be present in all RO-Crates.
|
199
201
|
#
|
200
|
-
# @return [
|
202
|
+
# @return [Set<Entity>]
|
201
203
|
def default_entities
|
202
|
-
[metadata, preview, self]
|
204
|
+
Set.new([metadata, preview, self])
|
203
205
|
end
|
204
206
|
|
205
207
|
def properties
|
@@ -217,7 +219,7 @@ module ROCrate
|
|
217
219
|
#
|
218
220
|
# @return [Addressable::URI]
|
219
221
|
def canonical_id
|
220
|
-
Addressable::URI.parse("arcp://uuid,#{uuid}").join(id)
|
222
|
+
@canonical_id ||= Addressable::URI.parse("arcp://uuid,#{uuid}").join(id)
|
221
223
|
end
|
222
224
|
|
223
225
|
##
|
@@ -248,8 +250,7 @@ module ROCrate
|
|
248
250
|
# Gather a map of entries, starting from the crate itself, then any directory data entities, then finally any
|
249
251
|
# file data entities. This ensures in the case of a conflict, the more "specific" data entities take priority.
|
250
252
|
entries = own_payload
|
251
|
-
|
252
|
-
sorted_entities = (non_self_entities | data_entities).sort_by { |e| e.is_a?(ROCrate::Directory) ? 0 : 1 }
|
253
|
+
sorted_entities = (default_entities.delete(self) | data_entities).sort_by { |e| e.is_a?(ROCrate::Directory) ? 0 : 1 }
|
253
254
|
|
254
255
|
sorted_entities.each do |entity|
|
255
256
|
entity.payload.each do |path, entry|
|
@@ -277,7 +278,7 @@ module ROCrate
|
|
277
278
|
entity = dereference(entity) if entity.is_a?(String)
|
278
279
|
return unless entity
|
279
280
|
|
280
|
-
deleted = data_entities.delete(entity) || contextual_entities.delete(entity)
|
281
|
+
deleted = data_entities.delete?(entity) || contextual_entities.delete?(entity)
|
281
282
|
|
282
283
|
if deleted && remove_orphaned
|
283
284
|
crate_entities = crate.linked_entities(deep: true)
|
@@ -251,7 +251,7 @@ module ROCrate
|
|
251
251
|
value = properties[key] # We're doing this to call the JSONLDHash#[] method which wraps
|
252
252
|
value = [value] if value.is_a?(JSONLDHash)
|
253
253
|
|
254
|
-
if value.
|
254
|
+
if value.respond_to?(:each)
|
255
255
|
value.each do |v|
|
256
256
|
if v.is_a?(JSONLDHash) && !linked.key?(v['@id'])
|
257
257
|
entity = v.dereference
|
data/lib/ro_crate/reader.rb
CHANGED
@@ -182,7 +182,7 @@ module ROCrate
|
|
182
182
|
crate.metadata.context = context
|
183
183
|
preview_properties = entity_hash.delete(ROCrate::Preview::IDENTIFIER)
|
184
184
|
preview_path = ::File.join(source, ROCrate::Preview::IDENTIFIER)
|
185
|
-
preview_path = ::File.
|
185
|
+
preview_path = ::File.exist?(preview_path) ? Pathname.new(preview_path) : nil
|
186
186
|
if preview_properties || preview_path
|
187
187
|
crate.preview = ROCrate::Preview.new(crate, preview_path, preview_properties || {})
|
188
188
|
end
|
data/ro_crate.gemspec
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Gem::Specification.new do |s|
|
2
2
|
s.name = 'ro-crate'
|
3
|
-
s.version = '0.
|
3
|
+
s.version = '0.5.0'
|
4
4
|
s.summary = 'Create, manipulate, read RO-Crates.'
|
5
5
|
s.authors = ['Finn Bacall']
|
6
6
|
s.email = 'finn.bacall@manchester.ac.uk'
|
@@ -11,8 +11,9 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.add_runtime_dependency 'addressable', '>= 2.7', '< 2.9'
|
12
12
|
s.add_runtime_dependency 'rubyzip', '~> 2.0.0'
|
13
13
|
s.add_development_dependency 'rake', '~> 13.0.0'
|
14
|
-
s.add_development_dependency 'test-unit', '~> 3.
|
14
|
+
s.add_development_dependency 'test-unit', '~> 3.5.3'
|
15
15
|
s.add_development_dependency 'simplecov', '~> 0.21.2'
|
16
16
|
s.add_development_dependency 'yard', '~> 0.9.25'
|
17
17
|
s.add_development_dependency 'webmock', '~> 3.8.3'
|
18
|
+
s.add_development_dependency 'rexml', '~> 3.2.5'
|
18
19
|
end
|
data/test/crate_test.rb
CHANGED
@@ -171,7 +171,8 @@ class CrateTest < Test::Unit::TestCase
|
|
171
171
|
crate.author = bob
|
172
172
|
info.author = bob
|
173
173
|
|
174
|
-
|
174
|
+
assert_includes crate.contextual_entities, bob
|
175
|
+
assert_equal 1, crate.contextual_entities.length
|
175
176
|
assert_equal bob, info.author
|
176
177
|
assert_equal bob, crate.author
|
177
178
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ro-crate
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Finn Bacall
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-06
|
11
|
+
date: 2022-09-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: addressable
|
@@ -64,14 +64,14 @@ dependencies:
|
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: 3.
|
67
|
+
version: 3.5.3
|
68
68
|
type: :development
|
69
69
|
prerelease: false
|
70
70
|
version_requirements: !ruby/object:Gem::Requirement
|
71
71
|
requirements:
|
72
72
|
- - "~>"
|
73
73
|
- !ruby/object:Gem::Version
|
74
|
-
version: 3.
|
74
|
+
version: 3.5.3
|
75
75
|
- !ruby/object:Gem::Dependency
|
76
76
|
name: simplecov
|
77
77
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,6 +114,20 @@ dependencies:
|
|
114
114
|
- - "~>"
|
115
115
|
- !ruby/object:Gem::Version
|
116
116
|
version: 3.8.3
|
117
|
+
- !ruby/object:Gem::Dependency
|
118
|
+
name: rexml
|
119
|
+
requirement: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - "~>"
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: 3.2.5
|
124
|
+
type: :development
|
125
|
+
prerelease: false
|
126
|
+
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - "~>"
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: 3.2.5
|
117
131
|
description:
|
118
132
|
email: finn.bacall@manchester.ac.uk
|
119
133
|
executables: []
|
@@ -2455,7 +2469,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
2455
2469
|
- !ruby/object:Gem::Version
|
2456
2470
|
version: '0'
|
2457
2471
|
requirements: []
|
2458
|
-
rubygems_version: 3.
|
2472
|
+
rubygems_version: 3.2.33
|
2459
2473
|
signing_key:
|
2460
2474
|
specification_version: 4
|
2461
2475
|
summary: Create, manipulate, read RO-Crates.
|