Class representing a Facter::Util::CFPropertyList. Instanciate with new
Format constant for automatic format recognizing
Format constant for binary format
Format constant for XML format
initialize a new Facter::Util::CFPropertyList, arguments are:
:file |
Parse a file |
:format |
Format is one of FORMAT_BINARY or FORMAT_XML. Defaults to FORMAT_AUTO |
:data |
Parse a string |
All arguments are optional
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 238 def initialize(opts={}) @filename = opts[:file] @format = opts[:format] || FORMAT_AUTO @data = opts[:data] load(@filename) unless @filename.nil? load_str(@data) unless @data.nil? end
Read a plist file
file = nil |
The filename of the file to read. If nil, use filename instance variable |
format = nil |
The format of the plist file. Auto-detect if nil |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 303 def load(file=nil,format=nil) file = @filename if file.nil? format = @format if format.nil? @value = {} raise IOError.new("File #{file} not readable!") unless File.readable? file case format when List::FORMAT_BINARY, List::FORMAT_XML then prsr = @@parsers[format-1].new @value = prsr.load({:file => file}) when List::FORMAT_AUTO then # what we now do is ugly, but neccessary to recognize the file format magic_number = IO.read(file,8) filetype = magic_number[0..5] version = magic_number[6..7] prsr = nil if filetype == "bplist" then raise CFFormatError.new("Wong file version #{version}") unless version == "00" prsr = Binary.new else prsr = XML.new end @value = prsr.load({:file => file}) end end
read a binary plist file
filename = nil |
The filename to read from; if nil, read from the file defined by instance variable filename |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 255 def load_binary(filename=nil) load(filename,List::FORMAT_BINARY) end
load a plist from a binary string
str |
The string containing the plist |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 267 def load_binary_str(str=nil) load_str(str,List::FORMAT_BINARY) end
load a plist from a string
str = nil |
The string containing the plist |
format = nil |
The format of the plist |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 274 def load_str(str=nil,format=nil) str = @data if str.nil? format = @format if format.nil? @value = {} case format when List::FORMAT_BINARY, List::FORMAT_XML then prsr = @@parsers[format-1].new @value = prsr.load({:data => str}) when List::FORMAT_AUTO then # what we now do is ugly, but neccessary to recognize the file format filetype = str[0..5] version = str[6..7] prsr = nil if filetype == "bplist" then raise CFFormatError.new("Wong file version #{version}") unless version == "00" prsr = Binary.new else prsr = XML.new end @value = prsr.load({:data => str}) end end
Load an XML PropertyList
filename = nil |
The filename to read from; if nil, read from the file defined by instance variable filename |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 249 def load_xml(filename=nil) load(filename,List::FORMAT_XML) end
load a plist from a XML string
str |
The string containing the plist |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 261 def load_xml_str(str=nil) load_str(str,List::FORMAT_XML) end
Serialize Facter::Util::CFPropertyList object to specified format and write it to file
file = nil |
The filename of the file to write to. Uses filename instance variable if nil |
format = nil |
The format to save in. Uses format instance variable if nil |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 335 def save(file=nil,format=nil,opts={}) format = @format if format.nil? file = @filename if file.nil? raise CFFormatError.new("Format #{format} not supported, use List::FORMAT_BINARY or List::FORMAT_XML") if format != FORMAT_BINARY && format != FORMAT_XML if(!File.exists?(file)) then raise IOError.new("File #{file} not writable!") unless File.writable?(File.dirname(file)) elsif(!File.writable?(file)) then raise IOError.new("File #{file} not writable!") end opts[:root] = @value prsr = @@parsers[format-1].new content = prsr.to_str(opts) File.open(file, 'wb') { |fd| fd.write content } end
convert plist to string
format = List::FORMAT_BINARY |
The format to save the plist |
opts={} |
Pass parser options |
# File lib/facter/util/cfpropertylist/lib/rbCFPropertyList.rb, line 360 def to_str(format=List::FORMAT_BINARY,opts={}) prsr = @@parsers[format-1].new opts[:root] = @value return prsr.to_str(opts) end
Generated with the Darkfish Rdoc Generator 2.