Sha256: 6b4c7e163e9390cafe2484a962d0b1e467ec10712c2ec1536ce5ff2f9cca7baa
Contents?: true
Size: 727 Bytes
Versions: 1
Compression:
Stored size: 727 Bytes
Contents
class IO # @param [String] sep Line separtor (default: $/) # @param [Fixnum] bufsz Buffer size (default: 8192 bytes) # @return [Enumerator] def each_line_reverse sep = $/, bufsz = 8192 raise ArgumentError, "invalid buffer size" unless bufsz.is_a?(Integer) && bufsz > 0 return enum_for(:each_line_reverse, sep, bufsz) unless block_given? buffer = '' seplen = sep.length seek 0, SEEK_END while pos > 0 bytes = [bufsz, pos].min seek -bytes, SEEK_CUR buffer = read(bytes) << buffer seek -bytes, SEEK_CUR while ridx = buffer.rindex(sep, -1 - seplen) yield buffer.slice!((ridx + seplen)..-1) end end yield buffer unless buffer.empty? end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
each_line_reverse-1.0.0 | lib/each_line_reverse.rb |