lib/rio/ops/stream/input.rb in rio-0.3.7 vs lib/rio/ops/stream/input.rb in rio-0.3.8

- old
+ new

@@ -1,8 +1,8 @@ #-- # =============================================================================== -# Copyright (c) 2005, Christopher Kleckner +# Copyright (c) 2005, 2006 Christopher Kleckner # All rights reserved # # This file is part of the Rio library for ruby. # # Rio is free software; you can redistribute it and/or modify @@ -20,11 +20,11 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA # =============================================================================== #++ # # To create the documentation for Rio run the command -# rake rdoc +# ruby build_doc.rb # from the distribution directory. Then point your browser at the 'doc/rdoc' directory. # # Suggested Reading # * RIO::Doc::SYNOPSIS # * RIO::Doc::INTRO @@ -41,11 +41,10 @@ require 'rio/grande' require 'rio/rectype' require 'rio/ops/stream/read' require 'rio/context/stream' require 'stringio' -require 'rio/record' require 'rio/cp' require 'rio/piper/cp' module RIO @@ -71,11 +70,13 @@ def each(*args,&block) #p callstr('each',*args) each_(*args,&block) self end - + def empty?() + self.eof? + end def each_record(*args,&block) #p callstr('each_record',*args) each_record_(*args,&block) self end @@ -89,10 +90,13 @@ def get() until self.eof? raw_rec = self._get_rec return to_rec_(raw_rec) if @get_selrej.match?(raw_rec,@recno) end + self.close if closeoneof? + nil +# (closeoneof? ? self.on_eof_close{ nil } : nil) end def get_type(itertype,&block) old_itertype = cx['stream_itertype'] _set_itertype(itertype) begin @@ -136,13 +140,13 @@ else yield(to_rec_(raw_rec)) end end end - return self + return closeoneof? ? self.close : self end - closeoneof? ? ior.close_on_eof_(self) : self + closeoneof? ? self.close : self end # iterate over the records, yielding only with matching records # implemented in terms of get_ (see RIO::RecType::*) def each_record_(*args,&block) @@ -157,11 +161,11 @@ rangetops = check_passed_ranges(selrej,@recno) if rangetops and @recno > rangetops[0] yield to_rec_(raw_rec) if selrej.match?(raw_rec,@recno) end return self } - closeoneof? ? ior.close_on_eof_(self) : self + closeoneof? ? self.close : self end alias :each_row_ :each_ def clear_selection() cx.delete('stream_sel') cx.delete('stream_nosel') @@ -202,10 +206,10 @@ def check_passed_ranges(selrej,recno) throw :stop_iter if selrej.remove_passed_ranges(recno).never? selrej.rangetops end - def on_closeoneof + def on_closeoneof() #p "on_closeoneof #{self.object_id} #{self.ior.object_id}" self.close end private