def live_tree(name, options = {})
raise ":model, :model_class_name, or :find_item_proc option is required" if options[:model] == nil && options[:model_class_name] == nil && options[:find_item_proc] == nil
if options[:model_class_name] != nil
model = options[:model_class_name]
else
model = Inflector.camelize(options[:model])
end
self.const_set("LIVE_TREE_OPTIONS_" + name.to_s.upcase, options);
code = "" +
"def _#{name}_live_tree_options\n" +
" LIVE_TREE_OPTIONS_" + name.to_s.upcase + "\n" +
"end\n" +
"def _#{name}_find_live_tree_item\n" +
(options[:find_item_proc] == nil ?
(" " + model + ".find(live_tree_item_id)\n") :
(" _#{name}_live_tree_options[:find_item_proc].call(live_tree_item_id)\n")) +
"end\n" +
"def #{name}_live_tree_data\n" +
" get_live_tree_data(_#{name}_find_live_tree_item, _#{name}_live_tree_options)\n" +
"end\n"
class_eval code
end