Module: Plist::Emit
Overview
Create a plist
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::Emitmodule, which is already done forArrayandHash.
-
The following Ruby classes are converted into native plist types:
Array, Bignum, Date, DateTime, Fixnum, Float, Hash, Integer, String, Symbol, Time, true, false
-
ArrayandHashare both recursive; their elements will be converted into plist nodes inside the <array> and <dict> containers (respectively). -
IO(and its descendants) andStringIOobjects are read from and their contents placed in a <data> element. -
User classes may implement
to_plist_nodeto dictate how they should be serialized; otherwise the object will be passed toMarshal.dumpand the result placed in a <data> element.
For detailed usage instructions, refer to USAGE and the methods documented below.
Class Method Summary collapse
-
.dump(obj, envelope = true, format = :xml) ⇒ Object
The following Ruby classes are converted into native plist types: Array, Bignum, Date, DateTime, Fixnum, Float, Hash, Integer, String, Symbol, Time.
-
.save_plist(obj, filename, format = :xml) ⇒ Object
Writes the serialized object’s plist to the specified filename.
Instance Method Summary collapse
-
#save_plist(filename, format = :xml) ⇒ Object
Helper method for injecting into classes.
-
#to_plist(envelope = true, format = :xml) ⇒ Object
Helper method for injecting into classes.
Class Method Details
.dump(obj, envelope = true, format = :xml) ⇒ Object
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.
46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/plist/generator.rb', line 46 def self.dump(obj, envelope = true, format = :xml) case format when :xml output = plist_node(obj) output = wrap(output) if envelope when :binary raise(ArgumentError, "binary plists must have an envelope") unless envelope output = Plist::Binary.binary_plist(obj) else raise(ArgumentError, "unknown plist format `#{format}'") end return output end |
.save_plist(obj, filename, format = :xml) ⇒ Object
Writes the serialized object’s plist to the specified filename.
61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/plist/generator.rb', line 61 def self.save_plist(obj, filename, format = :xml) File.open(filename, 'wb') do |f| case format when :xml f.write(obj.to_plist(true, format)) when :binary f.write(Plist::Binary.binary_plist(obj)) else raise(ArgumentError, "unknown plist format `#{format}'") end end end |
Instance Method Details
#save_plist(filename, format = :xml) ⇒ Object
Helper method for injecting into classes. Calls Plist::Emit.save_plist with self.
34 35 36 |
# File 'lib/plist/generator.rb', line 34 def save_plist(filename, format = :xml) Plist::Emit.save_plist(self, filename, format) end |