lib/rio/ext/csv.rb in rio-0.3.4 vs lib/rio/ext/csv.rb in rio-0.3.6
- old
+ new
@@ -53,15 +53,20 @@
cx['csv_rs'] = rs
cxx_('csv',true)
end
protected :csv_
def columns(*ranges,&block)
- @cnames = nil
- cx['col_args'] = ranges.flatten
- cxx('columns',true,&block)
+ if skipping?
+ cx['skipping'] = false
+ skipcolumns(*args,&block)
+ else
+ @cnames = nil
+ cx['col_args'] = ranges.flatten
+ cxx('columns',true,&block)
+ end
end
- def nocolumns(*ranges,&block)
+ def skipcolumns(*ranges,&block)
@cnames = nil
cx['nocol_args'] = ranges.flatten
cxx('columns',true,&block)
end
def columns?()
@@ -97,12 +102,14 @@
def to_rec_(raw_rec)
#_init_cols_from_line(raw_rec) if @recno == 0
#p "#{callstr('to_rec_',raw_rec,@recno)} ; itertype=#{cx['stream_itertype']}"
case cx['stream_itertype']
when 'lines'
- raw_rec.extend(RIO::Ext::CSV::Str)
- raw_rec.csv_s_to_rec = _s_to_rec_proc(cx['csv_fs'],cx['csv_rs'])
+ unless copying_from?
+ raw_rec.extend(RIO::Ext::CSV::Str)
+ raw_rec.csv_s_to_rec = _s_to_rec_proc(cx['csv_fs'],cx['csv_rs'])
+ end
raw_rec
when 'records'
_l2record(raw_rec,cx['csv_fs'],cx['csv_rs'])
when 'rows'
_l2row(raw_rec,cx['csv_fs'],cx['csv_rs'])
@@ -151,11 +158,13 @@
::CSV.parse_line(line,fs,rs)
end
def _l2record(line,fs,rs)
#p callstr('_l2record',line,fs,rs,cols)
fields = trim(::CSV.parse_line(line,fs,rs))
- fields.extend(RIO::Ext::CSV::Ary)
- fields.csv_rec_to_s = _rec_to_s_proc(fs,rs)
+ unless copying_from?
+ fields.extend(RIO::Ext::CSV::Ary)
+ fields.csv_rec_to_s = _rec_to_s_proc(fs,rs)
+ end
fields
end
def cnames(num)
@cnames ||= trim((0...num).map { |n| "Col#{n}" })
end