lib/source/io_gets.ex
defmodule Strom.Source.IOGets do
@moduledoc "Source for reading IO inputs"
@behaviour Strom.Source
defstruct []
def new, do: %__MODULE__{}
@impl true
def start(%__MODULE__{} = io_gets), do: io_gets
@impl true
def call(%__MODULE__{} = io_gets) do
data = IO.gets("IOGets> ")
{[String.trim(data)], io_gets}
end
@impl true
def stop(%__MODULE__{} = io_gets), do: io_gets
end