def compile_hash(options={})
@_result = {}
@options[:extends].each do |settings|
extends(settings[:file], settings[:options], &settings[:block])
end if @options.has_key?(:extends)
@options[:attributes].each_pair do |attribute, name|
attribute(attribute, :as => name)
end if @options.has_key?(:attributes)
@options[:node].each do |settings|
node(settings[:name], settings[:options], &settings[:block])
end if @options.has_key?(:node)
@options[:child].each do |settings|
child(settings[:data], settings[:options], &settings[:block])
end if @options.has_key?(:child)
@options[:glue].each do |settings|
glue(settings[:data], &settings[:block])
end if @options.has_key?(:glue)
if options[:root_name].present?
@_root_name = options[:root_name]
else
@_root_name = nil
end
@_root_name ? { @_root_name => @_result } : @_result
end