def stub_data_for rules, data = {}
rules[:children].each_pair do |name,child_rules|
if child_rules[:ignore]
stub_data_for(child_rules, data) if child_rules[:children]
next
end
orig_data = data
if wrapper = child_rules[:wrap]
data[wrapper] ||= {}
data = data[wrapper]
end
ruby_name = child_rules[:rename] ||
Inflection.ruby_name(name.to_s).to_sym
if child_rules[:list]
data[ruby_name] = []
elsif child_rules[:map]
data[ruby_name] = {}
elsif child_rules[:children] and !child_rules[:children].empty?
data[ruby_name] = stub_data_for(child_rules)
else
data[ruby_name] = case child_rules[:type]
when :integer then 0
when :float then 0.0
when :time then Time.now
when :datetime then Date.parse(Time.now.to_s)
when :boolean then false
else nil
end
end
data = orig_data
end
data
end