Skip to content

Instantly share code, notes, and snippets.

@necojackarc
Created November 1, 2015 14:04
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save necojackarc/3e5603d344e963db84c6 to your computer and use it in GitHub Desktop.
Save necojackarc/3e5603d344e963db84c6 to your computer and use it in GitHub Desktop.
You can get batches of lines from text files.
class TextFilePager
DEFAULT_BATCH_SIZE = 1000
def initialize(file_path, skip_header: false, delete_line_break: false)
@file_path = file_path
@skip_header = skip_header
@delete_line_break = delete_line_break
end
def batch_line(batch_size: DEFAULT_BATCH_SIZE)
File.open(@file_path) do |file|
file.gets if skip_header?
loop do
line, lines = "", []
batch_size.times do
break if (line = file.gets).nil?
lines << (delete_line_break? ? line.chomp : line)
end
yield lines
break if line.nil?
end
end
end
def skip_header?
@skip_header
end
def delete_line_break?
@delete_line_break
end
end
@necojackarc
Copy link
Author

I've written a post related with this gist.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment