moab-versioning 1.5.0 → 2.0.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/lib/moab.rb +0 -1
- data/lib/moab/file_group.rb +1 -1
- data/lib/moab/file_group_difference.rb +1 -1
- data/lib/moab/file_group_difference_subset.rb +1 -1
- data/lib/moab/file_instance.rb +1 -1
- data/lib/moab/file_instance_difference.rb +1 -1
- data/lib/moab/file_inventory.rb +1 -1
- data/lib/moab/file_inventory_difference.rb +1 -1
- data/lib/moab/file_manifestation.rb +1 -1
- data/lib/moab/file_signature.rb +1 -1
- data/lib/moab/signature_catalog.rb +1 -1
- data/lib/moab/signature_catalog_entry.rb +1 -1
- data/lib/{moab_stanford.rb → moab/stanford.rb} +0 -1
- data/lib/moab/version_metadata.rb +1 -1
- data/lib/moab/version_metadata_entry.rb +1 -1
- data/lib/moab/version_metadata_event.rb +1 -1
- data/lib/serializer/manifest.rb +1 -1
- data/lib/serializer/serializable.rb +1 -1
- data/lib/stanford/active_fedora_object.rb +1 -1
- data/lib/stanford/content_inventory.rb +7 -7
- data/lib/stanford/dor_metadata.rb +4 -4
- data/lib/stanford/storage_repository.rb +1 -1
- data/lib/stanford/storage_services.rb +10 -10
- data/lib/tools/api_doc_generator.rb +1 -1
- metadata +7 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29bcc835c352dfeebb39b066f380e14bd37cb1ca
|
|
4
|
+
data.tar.gz: 31912b340a667715ae00a76cfaa657962ceb73fb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f468a3db4861d818ac143289f0a83372f23174bd0c1ff7122a69167406d8e566c049bb80a591f0b4876d50596b083e9de20913ff0ecc6f878611dcbd3d23d1e3
|
|
7
|
+
data.tar.gz: d906f907c719f412e7572d659b6ea22b2a4afa9d216f1960f437fd79774406285fae3d813c2abed36cc188a35a897495010351defa8122cd44f38e17143e4b3c
|
data/lib/moab.rb
CHANGED
data/lib/moab/file_group.rb
CHANGED
|
@@ -15,7 +15,7 @@ module Moab
|
|
|
15
15
|
#
|
|
16
16
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
17
17
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
18
|
-
class FileGroup < Serializable
|
|
18
|
+
class FileGroup < Serializer::Serializable
|
|
19
19
|
|
|
20
20
|
include HappyMapper
|
|
21
21
|
|
|
@@ -36,7 +36,7 @@ module Moab
|
|
|
36
36
|
#
|
|
37
37
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
38
38
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
39
|
-
class FileGroupDifference < Serializable
|
|
39
|
+
class FileGroupDifference < Serializer::Serializable
|
|
40
40
|
include HappyMapper
|
|
41
41
|
|
|
42
42
|
# The name of the XML element used to serialize this objects data
|
|
@@ -13,7 +13,7 @@ module Moab
|
|
|
13
13
|
#
|
|
14
14
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
15
15
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
16
|
-
class FileGroupDifferenceSubset < Serializable
|
|
16
|
+
class FileGroupDifferenceSubset < Serializer::Serializable
|
|
17
17
|
include HappyMapper
|
|
18
18
|
|
|
19
19
|
# The name of the XML element used to serialize this objects data
|
data/lib/moab/file_instance.rb
CHANGED
|
@@ -13,7 +13,7 @@ module Moab
|
|
|
13
13
|
#
|
|
14
14
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
15
15
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
16
|
-
class FileInstance < Serializable
|
|
16
|
+
class FileInstance < Serializer::Serializable
|
|
17
17
|
|
|
18
18
|
include HappyMapper
|
|
19
19
|
|
|
@@ -20,7 +20,7 @@ module Moab
|
|
|
20
20
|
#
|
|
21
21
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
22
22
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
23
|
-
class FileInstanceDifference < Serializable
|
|
23
|
+
class FileInstanceDifference < Serializer::Serializable
|
|
24
24
|
|
|
25
25
|
include HappyMapper
|
|
26
26
|
|
data/lib/moab/file_inventory.rb
CHANGED
|
@@ -28,7 +28,7 @@ module Moab
|
|
|
28
28
|
# @example {include:file:spec/fixtures/derivatives/manifests/v3/versionInventory.xml}
|
|
29
29
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
30
30
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
31
|
-
class FileInventory < Manifest
|
|
31
|
+
class FileInventory < Serializer::Manifest
|
|
32
32
|
|
|
33
33
|
include HappyMapper
|
|
34
34
|
|
|
@@ -17,7 +17,7 @@ module Moab
|
|
|
17
17
|
# @example {include:file:spec/fixtures/derivatives/manifests/all/fileInventoryDifference.xml}
|
|
18
18
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
19
19
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
20
|
-
class FileInventoryDifference < Manifest
|
|
20
|
+
class FileInventoryDifference < Serializer::Manifest
|
|
21
21
|
|
|
22
22
|
include HappyMapper
|
|
23
23
|
|
|
@@ -17,7 +17,7 @@ module Moab
|
|
|
17
17
|
#
|
|
18
18
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
19
19
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
20
|
-
class FileManifestation < Serializable
|
|
20
|
+
class FileManifestation < Serializer::Serializable
|
|
21
21
|
include HappyMapper
|
|
22
22
|
|
|
23
23
|
# The name of the XML element used to serialize this objects data
|
data/lib/moab/file_signature.rb
CHANGED
|
@@ -39,7 +39,7 @@ module Moab
|
|
|
39
39
|
#
|
|
40
40
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
41
41
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
42
|
-
class FileSignature < Serializable
|
|
42
|
+
class FileSignature < Serializer::Serializable
|
|
43
43
|
|
|
44
44
|
include HappyMapper
|
|
45
45
|
|
|
@@ -25,7 +25,7 @@ module Moab
|
|
|
25
25
|
# @see Bagger
|
|
26
26
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
27
27
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
28
|
-
class SignatureCatalog < Manifest
|
|
28
|
+
class SignatureCatalog < Serializer::Manifest
|
|
29
29
|
include HappyMapper
|
|
30
30
|
|
|
31
31
|
# The name of the XML element used to serialize this objects data
|
|
@@ -13,7 +13,7 @@ module Moab
|
|
|
13
13
|
#
|
|
14
14
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
15
15
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
16
|
-
class SignatureCatalogEntry < Serializable
|
|
16
|
+
class SignatureCatalogEntry < Serializer::Serializable
|
|
17
17
|
|
|
18
18
|
include HappyMapper
|
|
19
19
|
|
|
@@ -12,7 +12,7 @@ module Moab
|
|
|
12
12
|
# @example {include:file:spec/fixtures/data/jq937jp0017/v3/metadata/versionMetadata.xml}
|
|
13
13
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
14
14
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
15
|
-
class VersionMetadata < Manifest
|
|
15
|
+
class VersionMetadata < Serializer::Manifest
|
|
16
16
|
|
|
17
17
|
include HappyMapper
|
|
18
18
|
|
|
@@ -11,7 +11,7 @@ module Moab
|
|
|
11
11
|
#
|
|
12
12
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
13
13
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
14
|
-
class VersionMetadataEntry < Serializable
|
|
14
|
+
class VersionMetadataEntry < Serializer::Serializable
|
|
15
15
|
|
|
16
16
|
include HappyMapper
|
|
17
17
|
|
|
@@ -13,7 +13,7 @@ module Moab
|
|
|
13
13
|
# @see VersionMetadataEntry
|
|
14
14
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
15
15
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
16
|
-
class VersionMetadataEvent < Serializable
|
|
16
|
+
class VersionMetadataEvent < Serializer::Serializable
|
|
17
17
|
|
|
18
18
|
include HappyMapper
|
|
19
19
|
|
data/lib/serializer/manifest.rb
CHANGED
|
@@ -10,7 +10,7 @@ module Serializer
|
|
|
10
10
|
# @see Serializable
|
|
11
11
|
# @note Copyright (c) 2012 by The Board of Trustees of the Leland Stanford Junior University.
|
|
12
12
|
# All rights reserved. See {file:LICENSE.rdoc} for details.
|
|
13
|
-
class Manifest < Serializable
|
|
13
|
+
class Manifest < Serializer::Serializable
|
|
14
14
|
|
|
15
15
|
include HappyMapper
|
|
16
16
|
|
|
@@ -146,7 +146,7 @@ module Serializer
|
|
|
146
146
|
when 2
|
|
147
147
|
ltag, left, rtag, right = :left, hashes[0], :right, hashes[1]
|
|
148
148
|
else
|
|
149
|
-
raise "wrong number of arguments (
|
|
149
|
+
raise ArgumentError, "wrong number of arguments (#{hashes.length} for 2 or 4)"
|
|
150
150
|
end
|
|
151
151
|
(left.keys | right.keys).each do |k|
|
|
152
152
|
if left[k] != right[k]
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'moab/stanford'
|
|
2
2
|
|
|
3
3
|
module Stanford
|
|
4
4
|
|
|
@@ -24,7 +24,7 @@ module Stanford
|
|
|
24
24
|
# Many of these objects have contentMetadata with no child elements, such as this:
|
|
25
25
|
# <contentMetadata objectId="bd608mj3166" type="file"/>
|
|
26
26
|
# but there are also objects that have no datasteam of this name at all
|
|
27
|
-
cm_inventory = FileInventory.new(:type=>"version",:digital_object_id=>object_id, :version_id=>version_id)
|
|
27
|
+
cm_inventory = Moab::FileInventory.new(:type=>"version",:digital_object_id=>object_id, :version_id=>version_id)
|
|
28
28
|
content_group = group_from_cm(content_metadata, subset)
|
|
29
29
|
cm_inventory.groups << content_group
|
|
30
30
|
cm_inventory
|
|
@@ -50,7 +50,7 @@ module Stanford
|
|
|
50
50
|
else
|
|
51
51
|
raise "Unknown disposition subset (#{subset})"
|
|
52
52
|
end
|
|
53
|
-
content_group = FileGroup.new(:group_id=>'content', :data_source => "contentMetadata-#{subset}")
|
|
53
|
+
content_group = Moab::FileGroup.new(:group_id=>'content', :data_source => "contentMetadata-#{subset}")
|
|
54
54
|
nodeset.each do |file_node|
|
|
55
55
|
signature = generate_signature(file_node)
|
|
56
56
|
instance = generate_instance(file_node)
|
|
@@ -63,7 +63,7 @@ module Stanford
|
|
|
63
63
|
# @param node [Nokogiri::XML::Node] The XML node containing file information
|
|
64
64
|
# @return [FileSignature] The {FileSignature} object generated from the XML data
|
|
65
65
|
def generate_signature(node)
|
|
66
|
-
signature = FileSignature.new()
|
|
66
|
+
signature = Moab::FileSignature.new()
|
|
67
67
|
signature.size = node.attributes['size'].content
|
|
68
68
|
checksum_nodes = node.xpath('checksum')
|
|
69
69
|
checksum_nodes.each do |checksum_node|
|
|
@@ -83,7 +83,7 @@ module Stanford
|
|
|
83
83
|
# @param node (see #generate_signature)
|
|
84
84
|
# @return [FileInstance] The {FileInstance} object generated from the XML data
|
|
85
85
|
def generate_instance(node)
|
|
86
|
-
instance = FileInstance.new()
|
|
86
|
+
instance = Moab::FileInstance.new()
|
|
87
87
|
instance.path = node.attributes['id'].content
|
|
88
88
|
instance.datetime = node.attributes['datetime'].content rescue nil
|
|
89
89
|
instance
|
|
@@ -175,8 +175,8 @@ module Stanford
|
|
|
175
175
|
return nil if content_metadata.nil?
|
|
176
176
|
return content_metadata if content_group.nil? or content_group.files.size < 1
|
|
177
177
|
signature_for_path = content_group.path_hash
|
|
178
|
-
@type_for_name = FileSignature.checksum_type_for_name
|
|
179
|
-
@names_for_type = FileSignature.checksum_names_for_type
|
|
178
|
+
@type_for_name = Moab::FileSignature.checksum_type_for_name
|
|
179
|
+
@names_for_type = Moab::FileSignature.checksum_names_for_type
|
|
180
180
|
ng_doc = Nokogiri::XML(content_metadata) { |x| x.noblanks }
|
|
181
181
|
nodeset = ng_doc.xpath("//file")
|
|
182
182
|
nodeset.each do |file_node|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'moab/stanford'
|
|
2
2
|
|
|
3
3
|
module Stanford
|
|
4
4
|
|
|
@@ -33,11 +33,11 @@ module Stanford
|
|
|
33
33
|
# @return [FileInventory] Inventory of the files under the specified directory
|
|
34
34
|
def inventory_from_directory(directory, version_id=nil)
|
|
35
35
|
version_id ||= @version_id
|
|
36
|
-
version_inventory = FileInventory.new(:type=>'version',:digital_object_id=>@digital_object_id, :version_id=>version_id)
|
|
36
|
+
version_inventory = Moab::FileInventory.new(:type=>'version',:digital_object_id=>@digital_object_id, :version_id=>version_id)
|
|
37
37
|
content_metadata = IO.read(File.join(directory,'contentMetadata.xml'))
|
|
38
|
-
content_group = ContentInventory.new.group_from_cm(content_metadata, 'preserve' )
|
|
38
|
+
content_group = Stanford::ContentInventory.new.group_from_cm(content_metadata, 'preserve' )
|
|
39
39
|
version_inventory.groups << content_group
|
|
40
|
-
metadata_group = FileGroup.new(:group_id=>'metadata').group_from_directory(directory)
|
|
40
|
+
metadata_group = Moab::FileGroup.new(:group_id=>'metadata').group_from_directory(directory)
|
|
41
41
|
version_inventory.groups << metadata_group
|
|
42
42
|
version_inventory
|
|
43
43
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
require '
|
|
1
|
+
require 'moab/stanford'
|
|
2
2
|
|
|
3
3
|
module Stanford
|
|
4
4
|
|
|
@@ -14,20 +14,20 @@ module Stanford
|
|
|
14
14
|
# @param base_version [Integer] The ID of the version whose inventory is the basis of, if nil use latest version
|
|
15
15
|
# @return [FileInventoryDifference] The report of differences between the content metadata and the specified version
|
|
16
16
|
def self.compare_cm_to_version(new_content_metadata, object_id, subset, base_version=nil)
|
|
17
|
-
new_inventory = ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, subset)
|
|
17
|
+
new_inventory = Stanford::ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, subset)
|
|
18
18
|
begin
|
|
19
19
|
# ObjectNotFoundException is raised if the object does not exist in storage
|
|
20
20
|
base_version ||= self.current_version(object_id)
|
|
21
21
|
# FileNotFoundException is raised if object exists but has no contentMetadata file
|
|
22
22
|
base_cm_pathname = self.retrieve_file('metadata', 'contentMetadata.xml', object_id, base_version)
|
|
23
|
-
base_inventory = ContentInventory.new.inventory_from_cm(base_cm_pathname.read, object_id, subset, base_version)
|
|
23
|
+
base_inventory = Stanford::ContentInventory.new.inventory_from_cm(base_cm_pathname.read, object_id, subset, base_version)
|
|
24
24
|
rescue Moab::ObjectNotFoundException, Moab::FileNotFoundException
|
|
25
25
|
# Create a skeletal FileInventory object, containing no file entries
|
|
26
|
-
storage_object = StorageObject.new(object_id, 'dummy')
|
|
27
|
-
base_version = StorageObjectVersion.new(storage_object,0)
|
|
26
|
+
storage_object = Moab::StorageObject.new(object_id, 'dummy')
|
|
27
|
+
base_version = Moab::StorageObjectVersion.new(storage_object,0)
|
|
28
28
|
base_inventory = base_version.file_inventory('version')
|
|
29
29
|
end
|
|
30
|
-
diff = FileInventoryDifference.new.compare(base_inventory, new_inventory)
|
|
30
|
+
diff = Moab::FileInventoryDifference.new.compare(base_inventory, new_inventory)
|
|
31
31
|
metadata_diff = diff.group_difference('metadata')
|
|
32
32
|
diff.group_differences.delete(metadata_diff) if metadata_diff
|
|
33
33
|
diff
|
|
@@ -38,15 +38,15 @@ module Stanford
|
|
|
38
38
|
# @param version_id [Integer] The ID of the version whose signature catalog is to be used, if nil use latest version
|
|
39
39
|
# @return [FileInventory] The versionAddtions report showing which files are new or modified in the content metadata
|
|
40
40
|
def self.cm_version_additions(new_content_metadata, object_id, version_id=nil)
|
|
41
|
-
new_inventory = ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, 'preserve')
|
|
41
|
+
new_inventory = Stanford::ContentInventory.new.inventory_from_cm(new_content_metadata, object_id, 'preserve')
|
|
42
42
|
begin
|
|
43
43
|
# ObjectNotFoundException is raised if the object does not exist in storage
|
|
44
44
|
version_id ||= self.current_version(object_id)
|
|
45
45
|
storage_object_version = @@repository.storage_object(object_id).find_object_version(version_id)
|
|
46
46
|
signature_catalog = storage_object_version.signature_catalog
|
|
47
47
|
rescue Moab::ObjectNotFoundException
|
|
48
|
-
storage_object = StorageObject.new(object_id, 'dummy')
|
|
49
|
-
base_version = StorageObjectVersion.new(storage_object,0)
|
|
48
|
+
storage_object = Moab::StorageObject.new(object_id, 'dummy')
|
|
49
|
+
base_version = Moab::StorageObjectVersion.new(storage_object,0)
|
|
50
50
|
signature_catalog = base_version.signature_catalog
|
|
51
51
|
end
|
|
52
52
|
signature_catalog.version_additions(new_inventory)
|
|
@@ -58,7 +58,7 @@ module Stanford
|
|
|
58
58
|
def self.cm_remediate(object_id, version_id=nil)
|
|
59
59
|
cm = self.retrieve_file('metadata', 'contentMetadata.xml', object_id, version_id)
|
|
60
60
|
group = self.retrieve_file_group('content', object_id, version_id)
|
|
61
|
-
ContentInventory.new.remediate_content_metadata(cm,group)
|
|
61
|
+
Stanford::ContentInventory.new.remediate_content_metadata(cm,group)
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: moab-versioning
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 2.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Darren Weber
|
|
@@ -11,7 +11,7 @@ authors:
|
|
|
11
11
|
autorequire:
|
|
12
12
|
bindir: bin
|
|
13
13
|
cert_chain: []
|
|
14
|
-
date:
|
|
14
|
+
date: 2016-02-11 00:00:00.000000000 Z
|
|
15
15
|
dependencies:
|
|
16
16
|
- !ruby/object:Gem::Dependency
|
|
17
17
|
name: confstruct
|
|
@@ -203,6 +203,7 @@ files:
|
|
|
203
203
|
- lib/moab/file_signature.rb
|
|
204
204
|
- lib/moab/signature_catalog.rb
|
|
205
205
|
- lib/moab/signature_catalog_entry.rb
|
|
206
|
+
- lib/moab/stanford.rb
|
|
206
207
|
- lib/moab/storage_object.rb
|
|
207
208
|
- lib/moab/storage_object_version.rb
|
|
208
209
|
- lib/moab/storage_repository.rb
|
|
@@ -212,7 +213,6 @@ files:
|
|
|
212
213
|
- lib/moab/version_metadata.rb
|
|
213
214
|
- lib/moab/version_metadata_entry.rb
|
|
214
215
|
- lib/moab/version_metadata_event.rb
|
|
215
|
-
- lib/moab_stanford.rb
|
|
216
216
|
- lib/serializer.rb
|
|
217
217
|
- lib/serializer/manifest.rb
|
|
218
218
|
- lib/serializer/serializable.rb
|
|
@@ -235,9 +235,9 @@ require_paths:
|
|
|
235
235
|
- lib
|
|
236
236
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
237
237
|
requirements:
|
|
238
|
-
- - "
|
|
238
|
+
- - "~>"
|
|
239
239
|
- !ruby/object:Gem::Version
|
|
240
|
-
version: '
|
|
240
|
+
version: '2.1'
|
|
241
241
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
242
242
|
requirements:
|
|
243
243
|
- - ">="
|
|
@@ -245,9 +245,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
245
245
|
version: 1.3.6
|
|
246
246
|
requirements: []
|
|
247
247
|
rubyforge_project:
|
|
248
|
-
rubygems_version: 2.
|
|
248
|
+
rubygems_version: 2.4.5.1
|
|
249
249
|
signing_key:
|
|
250
250
|
specification_version: 4
|
|
251
251
|
summary: Ruby implementation of digital object versioning toolkit used by the SULAIR
|
|
252
252
|
Digital Library
|
|
253
253
|
test_files: []
|
|
254
|
+
has_rdoc:
|