class Arknmax::Reader

Constants

DIGIT
DIGIT_LINE

Attributes

container[RW]
io[R]
max_digits_line[R]
size_limit[R]

Public Class Methods

new(size_limit, io: STDIN, max_digits_line: 1000) click to toggle source
# File lib/arknmax/reader.rb, line 12
def initialize(size_limit, io: STDIN, max_digits_line: 1000)
  @size_limit = size_limit
  @io = io
  @max_digits_line = max_digits_line
  @container = Arknmax::Heap.new(size_limit)
end

Public Instance Methods

perform() click to toggle source
# File lib/arknmax/reader.rb, line 19
def perform
  while (line = io.read(max_digits_line))
    finish_digits_line!(line) if end_with_num_char?(line)

    line.scan(DIGIT_LINE) { |n| container << n.to_i }
  end

  container
end

Private Instance Methods

end_with_num_char?(string) click to toggle source
# File lib/arknmax/reader.rb, line 31
def end_with_num_char?(string)
  !(string[-1] =~ DIGIT).nil?
end
finish_digits_line!(string) click to toggle source
# File lib/arknmax/reader.rb, line 35
def finish_digits_line!(string)
  return if string.nil?

  string << io.readbyte while end_with_num_char?(string) && !io.eof?
end