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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ad52a377a6affc48a0923460f3db8ebc5209f520f918a57097d74863114d7e42
4
- data.tar.gz: bef654ae3d00ebd302c62fda5b53789c63ecda1295964667133eef47692731dd
3
+ metadata.gz: aa3bf8a8cdaa985143e1e2988d4fc24e14aad40bfd55763b4be17af23c8fa36a
4
+ data.tar.gz: 190326475ec90f7328e86252dd4f0c1150750ba8298fef7ba8337291ae988e21
5
5
  SHA512:
6
- metadata.gz: 907b74cff05114843bac2710a54fe141587f55b577785075bdaca49c88aa4051b26dc66785c80a1cb9c4cdcfa66030509b0bf02cc1ff82b452f18e37d755ad2a
7
- data.tar.gz: f2843ab1c44d290cee58f92ff302bf1a1cfb9f4f0a5275c400ff4fcca3b45d5a0470deb613730309eae6a9dead572433ebfc7d874749ab3311585077968d8b46
6
+ metadata.gz: 7cf568838eba39df6ff3770456a8f2133efe8797d1b916b0acf4523f1830623120e14e3a3e8d3e5bbbf09d7960fe5afc585389010ab674394cc80b3c944363d7
7
+ data.tar.gz: 151807e2411c7d7d09ef2930f75b1eca9f1274fce14ca28d084c7b609268defc70803832697d79b68b9efe282ed63b0af1b179fd1cb0de2dba641798b331afe9
@@ -5,7 +5,7 @@ jobs:
5
5
  runs-on: ubuntu-latest
6
6
  strategy:
7
7
  matrix:
8
- ruby: ['2.6', '2.7']
8
+ ruby: ['2.6', '2.7', '3.0', '3.1']
9
9
  fail-fast: false
10
10
  steps:
11
11
  - name: Checkout
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.5
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.17)
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 (1.1.3)
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.2.9)
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.2.3)
45
+ test-unit (~> 3.5.3)
44
46
  webmock (~> 3.8.3)
45
47
  yard (~> 0.9.25)
46
48
 
@@ -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.push(entity)
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.push(entity)
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 [Array<Entity>]
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 [Array<Entity>]
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
- non_self_entities = default_entities.reject { |e| e == self }
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.is_a?(Array)
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
@@ -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.exists?(preview_path) ? Pathname.new(preview_path) : nil
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.4.17'
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.2.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
- assert_equal [bob], crate.contextual_entities
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.17
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-20 00:00:00.000000000 Z
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.2.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.2.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.1.6
2472
+ rubygems_version: 3.2.33
2459
2473
  signing_key:
2460
2474
  specification_version: 4
2461
2475
  summary: Create, manipulate, read RO-Crates.