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