hydra-pbcore 2.2.0rc1 → 2.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/hydra-pbcore.gemspec +1 -0
- data/lib/hydra-pbcore.rb +8 -0
- data/lib/hydra_pbcore/methods.rb +23 -4
- data/lib/hydra_pbcore/version.rb +1 -1
- data/spec/document_spec.rb +17 -0
- metadata +26 -7
data/.gitignore
CHANGED
data/hydra-pbcore.gemspec
CHANGED
data/lib/hydra-pbcore.rb
CHANGED
@@ -66,6 +66,14 @@ module HydraPbcore
|
|
66
66
|
Nokogiri::XML(xml)
|
67
67
|
end
|
68
68
|
|
69
|
+
# Validates a supplied xml document against the PBCore schema. This differs from
|
70
|
+
# HydraPbcore::Methods.valid? which validates self, instead of the supplied argument.
|
71
|
+
# Argument must be a Nokogiri::XML::Document.
|
72
|
+
def self.is_valid? xml
|
73
|
+
xsd = Nokogiri::XML::Schema(open("http://pbcore.org/xsd/pbcore-2.0.xsd"))
|
74
|
+
xsd.validate(xml)
|
75
|
+
end
|
76
|
+
|
69
77
|
autoload :Mapper
|
70
78
|
autoload :Methods
|
71
79
|
autoload :Conversions
|
data/lib/hydra_pbcore/methods.rb
CHANGED
@@ -4,18 +4,37 @@ module HydraPbcore::Methods
|
|
4
4
|
self.find_by_terms(type.to_sym).slice(index.to_i).remove
|
5
5
|
end
|
6
6
|
|
7
|
-
# Returns a new Nokogiri::XML object with the contents of self
|
8
|
-
# valid pbcore xml document.
|
7
|
+
# Returns a new Nokogiri::XML object with the contents of self, plus any additional instanstations,
|
8
|
+
# reordered and repackaged as a valid pbcore xml document.
|
9
9
|
#
|
10
10
|
# The original xml from the datastream is copied to a new Nokogiri object, then each node
|
11
|
-
# is added--in correct order--to a new blank, valid pbcore xml document.
|
12
|
-
|
11
|
+
# is added--in correct order--to a new blank, valid pbcore xml document. If additional
|
12
|
+
# instantiations are passed in as an array, those are correctly reordered as well, and
|
13
|
+
# included in the document
|
14
|
+
def to_pbcore_xml included_instantiations = Array.new, instantiations = Array.new
|
15
|
+
|
16
|
+
# Reorder any included instantations
|
17
|
+
included_instantiations.each do |i|
|
18
|
+
original_inst = Nokogiri::XML(i.to_xml)
|
19
|
+
new_inst = Nokogiri::XML("<pbcoreInstantiation/>")
|
20
|
+
HydraPbcore::InstantiationNodes.each do |node|
|
21
|
+
original_inst.search(node).each do |n|
|
22
|
+
new_inst.root.add_child(n)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
instantiations << new_inst
|
26
|
+
end
|
27
|
+
|
28
|
+
# Reorder the document
|
13
29
|
original = Nokogiri::XML(self.to_xml)
|
14
30
|
new_doc = HydraPbcore.blank
|
15
31
|
HydraPbcore::DocumentNodes.each do |node|
|
16
32
|
original.search(node).each do |n|
|
17
33
|
new_doc.root.add_child(n)
|
18
34
|
end
|
35
|
+
if node.match("pbcoreInstantiation") && !instantiations.empty?
|
36
|
+
instantiations.collect { |i| new_doc.root.add_child(i.root.to_xml) }
|
37
|
+
end
|
19
38
|
end
|
20
39
|
return new_doc
|
21
40
|
end
|
data/lib/hydra_pbcore/version.rb
CHANGED
data/spec/document_spec.rb
CHANGED
@@ -194,6 +194,23 @@ describe HydraPbcore::Datastream::Document do
|
|
194
194
|
save_template @object_ds.to_pbcore_xml, "document_valid.xml"
|
195
195
|
@object_ds.valid?.should == []
|
196
196
|
end
|
197
|
+
|
198
|
+
describe "xml document with instantiations" do
|
199
|
+
|
200
|
+
before(:each) do
|
201
|
+
@digital = HydraPbcore::Datastream::Instantiation.new(nil, nil)
|
202
|
+
@digital.define :digital
|
203
|
+
@physical = HydraPbcore::Datastream::Instantiation.new(nil, nil)
|
204
|
+
@physical.define :physical
|
205
|
+
end
|
206
|
+
|
207
|
+
it "should validate against the PBCore schema" do
|
208
|
+
save_template @object_ds.to_pbcore_xml([@digital, @physical]), "document_with_instantiations_valid.xml"
|
209
|
+
HydraPbcore.is_valid?(Nokogiri::XML(sample("document_with_instantiations_valid.xml"))).should be_true
|
210
|
+
end
|
211
|
+
|
212
|
+
end
|
213
|
+
|
197
214
|
end
|
198
215
|
|
199
216
|
end
|
metadata
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hydra-pbcore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
5
|
-
prerelease:
|
4
|
+
version: 2.2.0
|
5
|
+
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Adam Wead
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-04-12 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: active-fedora
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: solrizer
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - <
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 3.0.0
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - <
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 3.0.0
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: yard
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -202,16 +218,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
202
218
|
version: '0'
|
203
219
|
segments:
|
204
220
|
- 0
|
205
|
-
hash:
|
221
|
+
hash: 267528676452476624
|
206
222
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
207
223
|
none: false
|
208
224
|
requirements:
|
209
|
-
- - ! '
|
225
|
+
- - ! '>='
|
210
226
|
- !ruby/object:Gem::Version
|
211
|
-
version:
|
227
|
+
version: '0'
|
228
|
+
segments:
|
229
|
+
- 0
|
230
|
+
hash: 267528676452476624
|
212
231
|
requirements: []
|
213
232
|
rubyforge_project:
|
214
|
-
rubygems_version: 1.8.
|
233
|
+
rubygems_version: 1.8.23
|
215
234
|
signing_key:
|
216
235
|
specification_version: 3
|
217
236
|
summary: A Hydra gem that offers PBCore datastream definitions using OM
|