class Serializer::Manifest

Subclass of {Serializable} that adds methods for marshalling/unmarshalling data to a persistent XML file format.

Data Model

@see Serializable @note Copyright © 2012 by The Board of Trustees of the Leland Stanford Junior University.

All rights reserved.  See {file:LICENSE.rdoc} for details.

Public Class Methods

read_xml_file(parent_dir, filename = nil) click to toggle source

@api external @param parent_dir [Pathname,String] The location of the directory in which the xml file is located @param filename [String] Optional filename if one wishes to override the default filename @return [Serializable] Read the xml file and return the parsed XML @example {include:file:spec/features/serializer/read_xml_spec.rb}

# File lib/serializer/manifest.rb, line 50
def self.read_xml_file(parent_dir, filename = nil)
  parse(xml_pathname(parent_dir, filename).read)
end
write_xml_file(xml_object, parent_dir, filename = nil) click to toggle source

@api external @param xml_object [Serializable] @param parent_dir [Pathname,String] The location of the directory in which the xml file is located @param filename [String] Optional filename if one wishes to override the default filename @return [void] Serializize the in-memory object to a xml file instance

# File lib/serializer/manifest.rb, line 59
def self.write_xml_file(xml_object, parent_dir, filename = nil)
  parent_dir.mkpath
  xml_pathname(parent_dir, filename).open('w') do |f|
    xml_builder = Nokogiri::XML::Builder.new(encoding: 'UTF-8')
    xml_builder = xml_object.to_xml(xml_builder)
    f << xml_builder.to_xml
  end
  nil
end
xml_filename(filename = nil) click to toggle source

@api internal @param filename [String] Optional filename if one wishes to override the default filename @return [String] Returns the standard filename (derived from the class name) to be used for serializing an object

# File lib/serializer/manifest.rb, line 20
def self.xml_filename(filename = nil)
  if filename
    filename
  else
    cname = name.split(/::/).last
    "#{cname[0, 1].downcase}#{cname[1..]}.xml"
  end
end
xml_pathname(parent_dir, filename = nil) click to toggle source

@api internal @param parent_dir [Pathname,String] The location of the directory in which the xml file is located @param filename [String] Optional filename if one wishes to override the default filename @return [Pathname] The location of the xml file

# File lib/serializer/manifest.rb, line 33
def self.xml_pathname(parent_dir, filename = nil)
  Pathname.new(parent_dir).join(xml_filename(filename))
end
xml_pathname_exist?(parent_dir, filename = nil) click to toggle source

@api external @param parent_dir [Pathname,String] The location of the directory in which the xml file is located @param filename [String] Optional filename if one wishes to override the default filename @return [Boolean] Returns true if the xml file exists

# File lib/serializer/manifest.rb, line 41
def self.xml_pathname_exist?(parent_dir, filename = nil)
  xml_pathname(parent_dir, filename).exist?
end

Public Instance Methods

write_xml_file(parent_dir, filename = nil) click to toggle source

@api external @param parent_dir [Pathname,String] The location of the directory in which the xml file is located @param filename [String] Optional filename if one wishes to override the default filename @return [void] Serializize the in-memory object to a xml file instance @example {include:file:spec/features/serializer/write_xml_spec.rb}

# File lib/serializer/manifest.rb, line 74
def write_xml_file(parent_dir, filename = nil)
  self.class.write_xml_file(self, parent_dir, filename)
end