You can dump an object to a plist in one of two ways:
Plist::Emit.dump(obj)
obj.to_plist
This requires that you mixin the Plist::Emit
module, which is
already done for Array
and Hash
.
The following Ruby classes are converted into native plist types:
Array, Bignum, Date, DateTime, Fixnum, Float, Hash, Integer, String, Symbol, Time, true, false
Array
and Hash
are both recursive; their elements
will be converted into plist nodes inside the <array> and
<dict> containers (respectively).
IO
(and its descendants) and StringIO
objects are
read from and their contents placed in a <data> element.
User classes may implement to_plist_node
to dictate how they
should be serialized; otherwise the object will be passed to
Marshal.dump
and the result placed in a <data> element.
For detailed usage instructions, refer to USAGE and the methods documented below.
The following Ruby classes are converted into native plist types:
Array, Bignum, Date, DateTime, Fixnum, Float, Hash, Integer, String, Symbol, Time
Write us (via RubyForge) if you think another class can be coerced safely into one of the expected plist classes.
IO
and StringIO
objects are encoded and placed in
<data> elements; other objects are Marshal.dump
'ed
unless they implement to_plist_node
.
The envelope
parameters dictates whether or not the resultant
plist fragment is wrapped in the normal XML/plist header and footer. Set
it to false if you only want the fragment.
# File lib/plist/generator.rb, line 44 def self.dump(obj, envelope = true) output = plist_node(obj) output = wrap(output) if envelope return output end
Writes the serialized object's plist to the specified filename.
# File lib/plist/generator.rb, line 53 def self.save_plist(obj, filename) File.open(filename, 'wb') do |f| f.write(obj.to_plist) end end
Helper method for injecting into classes. Calls
Plist::Emit.save_plist
with self
.
# File lib/plist/generator.rb, line 32 def save_plist(filename) Plist::Emit.save_plist(self, filename) end
Helper method for injecting into classes. Calls
Plist::Emit.dump
with self
.
# File lib/plist/generator.rb, line 27 def to_plist(envelope = true) return Plist::Emit.dump(self, envelope) end