Nokogiri-plist provides the functionality for dealing with XML in Apple’s property list format.
There is already a plist gem (github.com/bleything/plist) that has similar functionality. I didn’t realize it until I had written most of this gem. However this gem uses Nokogiri, so the implementation is simpler. The plist gem does its own XML parsing. I figured since I was already using Nokogiri in my project, it’s better to build on top of that. I did get ideas from the original gem. I have benchmarked my gem against that gem and it performs similarly. Once I come up with a little more scientific benchmarks, I’ll show them.‘
-
Parsers plist files into simple basic Ruby objects
-
Generates plist XML from Ruby objects
-
Uses the awesome Nokogiri gem
Sample plist (test.plist) <plist> <dict> <key>Beers</key> <array> <string>Black Butte</string> <string>Steel Reserve</string> <string>Bass Pale Ale</string> </array> <key>Beer Drinker</key><string>Casey</key> <key>Beers Drank</key><integer>4123</integer> </dict> </plist> > require 'nokogiri-plist' Parse the plist XML > plist = Nokogiri::PList(open('test.plist')) => { "Beers" => ["Black Butte", "Steel Reserve", "Bass Pale Ale"], "Beers Drank" => 4123, "Beer Drinker" => "Casey"} Read a dict property thats value is an array > plist["Beers"] => ["Black Butte", "Steel Reserve", "Bass Pale Ale"] Read another value > plist["Beer Drinker"] => "Casey" Turn it into a string containing XML > puts plist.to_plist_xml <dict> <key>Beers</key> <array> <string>Black Butte</string> <string>Steel Reserve</string> <string>Bass Pale Ale</string> </array> <key>Beers Drank</key><integer>4123</integer> <key>Beer Drinker</key><string>Casey</string> </dict> Convert a string into a plist XML string > "beer".to_plist_xml => "<string>beer</string>" Convert an array to a plist XML string > puts (1..3).to_a.to_plist_xml <array> <integer>1</integer> <integer>2</integer> <integer>3</integer> </array>
-
Ruby (tested with 1.9.1 and 1.8.7)
-
nokogiri
-
shoulda and mocha (only if you want to run the tests)
- sudo
-
gem install nokogiri-plist