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