Guest User

Untitled

a guest
Jan 19th, 2019
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.63 KB | None | 0 0
  1. module Enumerable
  2. class Reader
  3. def initialize(enumerable)
  4. @enumerable = enumerable
  5. @buffer = "".b
  6. end
  7.  
  8. def read(nsize, buffer = nil)
  9. @iterator ||= @enumerable.enum_for(:each)
  10. (buffer ||= @buffer).clear
  11. if @rest
  12. buffer << @rest
  13. @rest.clear
  14. end
  15. while buffer.bytesize < nsize
  16. begin
  17. buffer << @iterator.next.force_encoding(Encoding::BINARY)
  18. rescue StopIteration
  19. return if buffer.empty?
  20. break
  21. end
  22. end
  23. @rest = buffer.slice!(nsize..-1)
  24. buffer
  25. end
  26. end
  27.  
  28. def to_reader
  29. Reader.new(self)
  30. end
  31. end
Add Comment
Please, Sign In to add comment