lib/rbbt/tsv/accessor.rb in rbbt-util-5.21.59 vs lib/rbbt/tsv/accessor.rb in rbbt-util-5.21.60
- old
+ new
@@ -554,22 +554,40 @@
else
"\t" << values.to_s << "\n"
end
end
- def dumper_stream(keys = nil, no_options = false)
- TSV::Dumper.stream self do |dumper|
+ def dumper_stream(keys = nil, no_options = false, unmerge = false)
+ unmerge = false unless type == :double
+
+ options = self.options
+ options[:type] = :list if unmerge
+
+ TSV::Dumper.stream options do |dumper|
dumper.init unless no_options
begin
if keys
keys.each do |key|
- dumper.add key, self[key]
+ if unmerge
+ Misc.zip_fields(self[key]).each do |values|
+ dumper.add key, values
+ end
+ else
+ dumper.add key, self[key]
+ end
end
else
with_unnamed do
each do |k,v|
- dumper.add k, v
+
+ if unmerge
+ Misc.zip_fields(v).each do |values|
+ dumper.add k, values
+ end
+ else
+ dumper.add k, v
+ end
end
end
end
rescue Exception
Log.exception $!
@@ -577,11 +595,11 @@
end
dumper.close
end
end
- def to_s(keys = nil, no_options = false)
+ def to_s(keys = nil, no_options = false, unmerge = false)
if FalseClass === keys or TrueClass === keys
no_options = keys
keys = nil
end
@@ -589,10 +607,10 @@
with_unnamed do
keys = self.keys.sort
end
end
- io = dumper_stream(keys, no_options)
+ io = dumper_stream(keys, no_options, unmerge)
str = ''
while block = io.read(Misc::BLOCK_SIZE)
str << block
end