class Serializer::Manifest
Subclass of {Serializable} that adds methods for marshalling/unmarshalling data to a persistent XML file format.
Data Model¶ ↑
-
{Serializable} = utility methods to faciliate serialization to Hash, JSON, or YAML
-
{Manifest} = subclass adds methods for marshalling/unmarshalling data to XML file format
-
@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
@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
@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
@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
@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
@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
@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