lib/sink/io_puts.ex

defmodule Strom.Sink.IOPuts do
  @behaviour Strom.Sink

  defstruct line_sep: "\n"

  @impl true
  def start(%__MODULE__{} = io_puts), do: io_puts

  @impl true
  def call(%__MODULE__{} = io_puts, data) do
    IO.puts(data <> io_puts.line_sep)

    {:ok, {[data], io_puts}}
  end

  @impl true
  def stop(%__MODULE__{} = io_puts), do: io_puts
end