Lumberjack is best summed up as a generic DSL for constructing object trees.
It works great for configuration files, for generating a tree of configuration objects for later reflection or what-not. But in reality you could use it for whatever you're willing to dream up.
I apologise for the lack of documentation :) Below is a code example to get you started, any questions, shoot me a message!
Now, that code example:
require 'lumberjack'
class Person
attr_accessor :age, :gripes, :chums
def initialize(name)
@name = name
@gripes = []
@chums = []
end
end
class Gripe
def initialize(desc)
@desc = desc
end
end
tree = Lumberjack.construct do
# we're in list / instanciate object scope
@john = person 'John (is a doondy head)' do
# we instanticated an object, so now we're in attr assignment scope
age 12 # this is equiv to @john.age = 12
gripes do # open up a colection on john...
# now we're back in list / instanticate object scope
gripe 'untested code' # creating a gripe
gripe 'no beer' # and another
end # out of gripes, back to john attr assignment
end # out of john
# we're back to creating people:
person 'Ryan' do
age 25
end
person 'Tim' do
age 'Infinite'
chums @john # instance vars are shared across Lumberjack.construct
end
end
puts tree.inspect