= DocStorage {http://bitbucket.org/dmajda/doc_storage/}[http://bitbucket.org/dmajda/doc_storage/] DocStorage is a simple Ruby library for manipulating documents containing text and metadata. These documents can be used to implement a blog, wiki, or similar application without a database. == Document Formats The library distinguishes between simple documents and multipart documents. A simple document is similar to a RFC 822 message and it is suitable for storing text associated with some metadata (e.g. a blog article with a title and a publication date). It looks like this: Title: My blog article Datetime: 2009-11-01 18:03:27 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vel lorem massa. Sed blandit orci id leo blandit ut fermentum lacus ullamcorper. Suspendisse metus sapien, consectetur vitae imperdiet vel, ornare a metus. In imperdiet euismod mi, nec volutpat lorem porta id. A multipart document is loosely based on the MIME multipart message format and allows storing multiple simple documents (e.g. blog comments, each with an author and a publication date) in one file. It looks like this: Boundary: ===== --===== Author: Fan Datetime: 2009-11-01 20:07:15 Your article is really great! --===== Author: Critic Datetime: 2009-11-01 20:10:54 Your article sucks! See the documentation of DocStorage::SimpleDocument and DocStorage::MultipartDocument classes for more formal format description. == Installation sudo gem install doc_storage --source http://gemcutter.org/ == Example Usage === Simple Documents require "lib/doc_storage" # Create a new document with headers and body document = DocStorage::SimpleDocument.new( { "Title" => "Finishing the documentation", "Priority" => "urgent" }, "We should finish the documentation ASAP." ) # Load from a file document = DocStorage::SimpleDocument.load_file("examples/simple.txt") # Document manipulation document.headers["Tags"] = "example" document.body += "Nulla mi dui, pellentesque et accumsan vitae, mattis et velit." # Save the modified document document.save_file("examples/simple_modified.txt") === Multipart Documents require "lib/doc_storage" # Create a new document with two parts document = DocStorage::MultipartDocument.new([ DocStorage::SimpleDocument.new( { "Title" => "Finishing the documentation", "Priority" => "urgent" }, "We should finish the documentation ASAP." ), DocStorage::SimpleDocument.new( { "Title" => "Finishing the code", "Priority" => "more urgent" }, "But we should finish the code first!" ), ]) # Load from a file document = DocStorage::MultipartDocument.load_file("examples/multipart.txt") # Document manipulation document.parts << DocStorage::SimpleDocument.new( { "Author" => "Middle man", "Datetime" => "2009-11-01 21:15:33", }, "I think your article is neither good nor bad." ) # Save the modified document document.save_file("examples/multipart_modified.txt") == Author DocStorage was brought to you by David Majda (david@majda.cz[mailto:david@majda.cz], majda.cz[http://majda.cz/]).