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', ''))