diff options
| author | Tomoyuki Sahara <[email protected]> | 2016-09-30 16:27:11 +0900 |
|---|---|---|
| committer | Tomoyuki Sahara <[email protected]> | 2016-09-30 16:27:11 +0900 |
| commit | 2229a2aa0fcd76bd5498417aca934d6ec7a211ef (patch) | |
| tree | f1892774b9ce4f8d583802b748d71d94e1e7428c /mrblib | |
| parent | 51cf6b6048d7e4182d8bb8d58c7bcac07cb3064b (diff) | |
| download | mruby-2229a2aa0fcd76bd5498417aca934d6ec7a211ef.tar.gz mruby-2229a2aa0fcd76bd5498417aca934d6ec7a211ef.zip | |
reimplement #eof. fixes #66.
Diffstat (limited to 'mrblib')
| -rw-r--r-- | mrblib/io.rb | 27 |
1 files changed, 6 insertions, 21 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb index 4bcf4f800..8408aea87 100644 --- a/mrblib/io.rb +++ b/mrblib/io.rb @@ -133,20 +133,12 @@ class IO end def eof? - return true if @buf && @buf.size > 0 - - ret = false - char = '' - begin - char = sysread(1) - rescue EOFError => e - ret = true - ensure - _ungets(char) + buf = _read_buf + return buf.size == 0 + rescue EOFError + return true end - - ret end alias_method :eof, :eof? @@ -176,24 +168,17 @@ class IO @buf = sysread(BUF_SIZE) end - def _ungets(substr) + def ungetc(substr) raise TypeError.new "expect String, got #{substr.class}" unless substr.is_a?(String) - raise IOError if @pos == 0 || @pos.nil? @pos -= substr.size if @buf.empty? - @buf = substr + @buf = substr.dup else @buf = substr + @buf end nil end - def ungetc(char) - raise IOError if @pos == 0 || @pos.nil? - _ungets(char) - nil - end - def read(length = nil) unless length.nil? unless length.is_a? Fixnum |
