lib/json_dumper/base.rb in json_dumper-0.2.0 vs lib/json_dumper/base.rb in json_dumper-0.3.0
- old
+ new
@@ -19,11 +19,16 @@
value.map do |ent|
new_dumper = new(ent)
if new_dumper.return_nils
return nil
end
- result = DumperHash.new(new_dumper.send(name, *(args[1..-1]), &block))
+ result = new_dumper.send(name, *(args[1..-1]), &block)
+ if result.respond_to?(:each) && !result.respond_to?(:each_pair)
+ result = DumperArray.new(result)
+ else
+ result = DumperHash.new(result)
+ end
preload_method_name = "#{name}_preload"
result.preload = instance.respond_to?(preload_method_name) ? instance.send(preload_method_name) : {}
result
end
elsif name.end_with?('_preload')
@@ -31,10 +36,16 @@
else
new_dumper = new(value)
if new_dumper.return_nils
return nil
end
- result = DumperHash.new(new_dumper.send(name, *(args[1..-1]), &block))
+ result = new_dumper.send(name, *(args[1..-1]), &block)
+ if result.respond_to?(:each) && !result.respond_to?(:each_pair)
+ result = DumperArray.new(result)
+ else
+ result = DumperHash.new(result)
+ end
+
preload_method_name = "#{name}_preload"
result.preload = instance.respond_to?(preload_method_name) ? instance.send(preload_method_name) : {}
result
end
elsif name.end_with?('_preload') && instance.respond_to?(name.gsub('_preload', ''))