lib/rio/context/stream.rb in rio-0.3.3 vs lib/rio/context/stream.rb in rio-0.3.4

- old
+ new

@@ -70,10 +70,11 @@ case when explicit then cx['stream_itertype'] = rt else cx.set_('stream_itertype',rt) end end + def _set_selargs(sa,sel=true,&block) key = (sel ? 'stream_sel' : 'stream_nosel') cx[key] = sa each(&block) if block_given? self @@ -94,55 +95,76 @@ def _rows(args,sel=true,explicit=true,&block) _set_itertype('rows',explicit) _set_selargs(args,sel,&block) end + def _sel() + !skipping? + end + def _sel_key(key) + (skipping? ? 'skip'+key : key) + end public def lines(*args,&block) #p callstr('lines',*args) - _set_sstype('lines') - _lines(args,&block) + if skipping? + cx['skipping'] = false + skiplines(*args,&block) + else + _set_sstype('lines') + _lines(args,_sel,&block) + end end def lines_(*args,&block) #p callstr('lines_',*args) _set_sstype('lines',false) - _lines(args,true,false,&block) + _lines(args,_sel,false,&block) end def records(*args,&block) - _set_sstype('records') - _records(args,&block) + if skipping? + cx['skipping'] = false + skiprecords(*args,&block) + else + _set_sstype('records') + _records(args,_sel,&block) + end end def records_(*args,&block) _set_sstype('records',false) - _records(args,true,false,&block) + _records(args,_sel,false,&block) end def rows(*args,&block) - _set_sstype('rows') - _rows(args,&block) + if skipping? + cx['skipping'] = false + skiprows(*args,&block) + else + _set_sstype('rows') + _rows(args,_sel,&block) + end end def rows_(*args,&block) _set_sstype('rows',false) - _rows(args,true,false,&block) + _rows(args,_sel,false,&block) end - def nolines(*args,&block) - #p callstr('nolines',*args) + def skiplines(*args,&block) + #p callstr('skiplines',*args) self.lines() unless args.empty? or cx.has_key?('stream_sel') - _set_sstype('nolines') + _set_sstype('skiplines') _lines(args,false,&block) end - def norecords(*args,&block) + def skiprecords(*args,&block) self.records() unless args.empty? or cx.has_key?('stream_sel') - _set_sstype('norecords') + _set_sstype('skiprecords') _records(args,false,&block) end - def norows(*args,&block) + def skiprows(*args,&block) self.rows() unless args.empty? or cx.has_key?('stream_sel') - _set_sstype('norows') + _set_sstype('skiprows') _rows(args,false,&block) end