Class: MultiVersionCommonCartridge::Writers::ManifestWriter
- Inherits:
-
Object
- Object
- MultiVersionCommonCartridge::Writers::ManifestWriter
show all
- Includes:
- SupportedVersions
- Defined in:
- lib/multi_version_common_cartridge/writers/manifest_writer.rb
Constant Summary
collapse
- MESSAGES =
{
no_identifier: 'An identifier is required',
}.freeze
SupportedVersions::SUPPORTED_VERSIONS, SupportedVersions::UNSUPPORTED_VERSION_MSG_TEMPLATE
Instance Attribute Summary collapse
Instance Method Summary
collapse
#validate_version
Constructor Details
#initialize(manifest, factory, version) ⇒ ManifestWriter
30
31
32
33
34
|
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 30
def initialize(manifest, factory, version)
@manifest = manifest
@factory = factory
@version = validate_version(version)
end
|
Instance Attribute Details
#manifest ⇒ Object
Returns the value of attribute manifest.
28
29
30
|
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 28
def manifest
@manifest
end
|
Instance Method Details
#finalize ⇒ Object
36
37
38
39
40
41
|
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 36
def finalize
raise StandardError, MESSAGES[:no_identifier] unless manifest.identifier
metadata_writer.finalize
organization_writer.finalize
resources_writer.finalize
end
|
#manifest_element ⇒ Object
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 50
def manifest_element
@manifest_element ||= CommonCartridge::Elements::Manifest.new.tap do |element|
element.identifier = manifest.identifier
element.xmlns = required_namespaces['xmlns']
element.xmlns_lomimscc = required_namespaces['xmlns:lomimscc']
element.xmlns_lom = required_namespaces['xmlns:lom']
element.xmlns_xsi = required_namespaces['xmlns:xsi']
element.xsi_schema_location = xsi_schema_location
element.metadata = metadata_writer.metadata_element
element.root_organization = CommonCartridge::Elements::Organizations::RootOrganization.new(
organizations: [organization_writer.organization_element]
)
element.root_resource = resources_writer.root_resource_element
end
end
|
#write(dir) ⇒ Object
43
44
45
46
47
48
|
# File 'lib/multi_version_common_cartridge/writers/manifest_writer.rb', line 43
def write(dir)
doc = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |builder|
SaxMachineNokogiriXmlSaver.new.save(builder, manifest_element, 'manifest')
end
File.open(File.join(dir, 'imsmanifest.xml'), 'w') { |file| file.write(doc.to_xml) }
end
|