summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Bleything <ben@bleything.net>2010-03-09 20:20:04 -0800
committerBen Bleything <ben@bleything.net>2010-03-09 20:22:50 -0800
commit078f5c0b6abfc3d9d6c3b4613ca0bfbdcb4bbf2d (patch)
tree27e7399282a577f3960f1a2dd8fbce02b9ba1132
parenta25cf39ac875a2361cb52579ee3aa54490bac165 (diff)
downloadplist-hoeify.tar.gz
update README for hoehoeify
-rw-r--r--README.rdoc162
1 files changed, 45 insertions, 117 deletions
diff --git a/README.rdoc b/README.rdoc
index d0fccf9..06faae7 100644
--- a/README.rdoc
+++ b/README.rdoc
@@ -1,145 +1,74 @@
-= All-purpose Property List manipulation library
+= plist
-Plist is a library to manipulate Property List files, also known as plists. It can parse plist files into native Ruby data structures as well as generating new plist files from your Ruby objects.
+* http://plist.rubyforge.org
+* http://github.com/bleything/plist
-== Usage
+== DESCRIPTION:
-=== Parsing
-
- result = Plist::parse_xml('path/to/example.plist')
-
- result.class
- => Hash
-
- "#{result['FirstName']} #{result['LastName']}"
- => "John Public"
-
- result['ZipPostal']
- => "12345"
-
-==== Example Property List
-
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <dict>
- <key>FirstName</key>
- <string>John</string>
-
- <key>LastName</key>
- <string>Public</string>
-
- <key>StreetAddr1</key>
- <string>123 Anywhere St.</string>
-
- <key>StateProv</key>
- <string>CA</string>
+Plist is a library to manipulate Property List files, also known as
+plists. It can parse plist files into native Ruby data structures as
+well as generating new plist files from your Ruby objects.
- <key>City</key>
- <string>Some Town</string>
+== FEATURES/PROBLEMS:
- <key>CountryName</key>
- <string>United States</string>
+* Parse XML plists
+* Serialize Ruby collections as XML plists
- <key>AreaCode</key>
- <string>555</string>
-
- <key>LocalPhoneNumber</key>
- <string>5551212</string>
-
- <key>ZipPostal</key>
- <string>12345</string>
- </dict>
- </plist>
+== SYNOPSIS:
=== Generation
-plist also provides the ability to generate plists from Ruby objects. 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 <tt>Marshal.dump</tt> and the result placed in a <data> element. See below for more details.
-
-==== Creating a plist
-
-There are two ways to generate complete plists. Given an object:
+ hsh = {
+ 'FirstName' => 'John',
+ 'LastName' => 'Public',
+ 'ZipPostal' => '12345'
+ }
- obj = [1, :two, {'c' => 0xd}]
-
-If you've mixed in <tt>Plist::Emit</tt> (which is already done for +Array+ and +Hash+), you can simply call +to_plist+:
-
- obj.to_plist
-
-This is equivalent to calling <tt>Plist::Emit.dump(obj)</tt>. Either one will yield:
-
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
- <plist version="1.0">
- <array>
- <integer>1</integer>
- <string>two</string>
- <dict>
- <key>c</key>
- <integer>13</integer>
- </dict>
- </array>
- </plist>
-
-You can also dump plist fragments by passing +false+ as the second parameter:
-
- Plist::Emit.dump('holy cow!', false)
- => "<string>holy cow!</string>"
-
-==== Custom serialization
+ File.open( 'path/to/example.plist', 'w' ) do |file|
+ file.puts hsh.to_plist
+ end
-If your class can be safely coerced into a native plist datatype, you can implement +to_plist_node+. Upon encountering an object of a class it doesn't recognize, the plist library will check to see if it responds to +to_plist_node+, and if so, insert the result of that call into the plist output.
+=== Parsing
-An example:
+ result = Plist::parse_xml('path/to/example.plist')
- class MyFancyString
- ...
+ result.class
+ => Hash
- def to_plist_node
- return "<string>#{self.defancify}</string>"
- end
- end
+ "#{result['FirstName']} #{result['LastName']}"
+ => "John Public"
-When you attempt to serialize a +MyFancyString+ object, the +to_plist_node+ method will be called and the object's contents will be defancified and placed in the plist.
+ result['ZipPostal']
+ => "12345"
-If for whatever reason you can't add this method, your object will be serialized with <tt>Marshal.dump</tt> instead.
+== REQUIREMENTS:
-== Links
+* Ruby Standard Library
+* Hoe for developers
-[Project Page] http://plist.rubyforge.org
-[GitHub] http://github.com/bleything/plist
-[RDoc] http://plist.rubyforge.org
+== INSTALL:
-== Credits
+* gem install plist
-plist is maintained by Ben Bleything <mailto:ben@bleything.net> and Patrick May <mailto:patrick@hexane.org>. Patrick wrote most of the code; Ben is a recent addition to the project, having merged in his plist generation library.
+== CREDITS:
-Other folks who have helped along the way:
+plist was originally created by Patrick May. Ben Bleything came along
+later and helped out. Other folks have helped along the way:
[<b>Martin Dittus</b>] who pointed out that +Time+ wasn't enough for plist <tt>Dates</tt>, especially those in <tt>~/Library/Cookies/Cookies.plist</tt>
[<b>Chuck Remes</b>] who pushed Patrick towards implementing <tt>#to_plist</tt>
[<b>Mat Schaffer</b>] who supplied code and test cases for <tt><data></tt> elements
[<b>Michael Granger</b>] for encouragement and help
[<b>Carsten Bormann, Chris Hoffman, Dana Contreras, Hongli Lai, Johan Sørensen</b>] for contributing Ruby 1.9.x compatibility fixes
+== LICENSE:
-== License and Copyright
-
-plist is released under the MIT License.
-
-Portions of the code (notably the Rakefile) contain code pulled and/or adapted from other projects. These files contain a comment at the top describing what was used.
-
-=== MIT License
+(The MIT License)
Copyright (c) 2006-2010, Ben Bleything <ben@bleything.net> and Patrick May <patrick@hexane.org>
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
+'Software'), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
@@ -148,11 +77,10 @@ the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
-KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
-WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
+THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.