This is a package that parses OmniGraffle documents. Omnigraffle[http://www.omnigroup.com/applications/omnigraffle/] is a drawing program only available on the Mac. It also contains GraphicalTestsForRails, a package that helps you use OmniGraffle documents as executable tests.

OmniGraffle documents are stored in Apple format[http://developer.apple.com/documentation/Cocoa/Conceptual/PropertyLists/Articles/XMLPListsConcept.html]. This package first
uses the Plist[http://rubyforge.org/projects/plist/] gem to read the document and convert it into a structure of
_nodes_ (hashes and arrays). It then descends the structure and decorates the nodes with methods that give more convenient access to some of their content.

Here's a short example of some of the accessors in action:

document = Graffle.parse_file("two-boxes-and-a-line.graffle")
line = document.first_sheet.first_line
puts line.tail.content.as_plain_text
puts line.head.content.as_plain_text
puts line.label_rtf.as_plain_text

All of the raw data is still available:

puts line['Style']['stroke']['HeadArrow']

The process of decorating a node is called _stereotyping_ it. Nodes are stereotyped with modules, and the node is said to _behave_ _like_ that module.