lib/source/io_gets.ex
defmodule Strom.Source.IOGets do
@behaviour Strom.Source
defstruct infinite: false
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> ")
{:ok, {[String.trim(data)], io_gets}}
end
@impl true
def stop(%__MODULE__{} = io_gets), do: io_gets
@impl true
def infinite?(%__MODULE__{infinite: infinite}), do: infinite
end