Lazy line-by-line text file reader in Elixir
Elixir
defmodule FileLines do
def each_line(path, fun) do
path
|> File.stream!([], :line)
|> Stream.map(&String.trim_trailing/1)
|> Stream.each(fun)
|> Stream.run()
end
def take_lines(path, count) do
path
|> File.stream!([], :line)
|> Stream.map(&String.trim_trailing/1)
|> Enum.take(count)
end
end