StringIO View Source
Controls an IO device process that wraps a string.
A StringIO
IO device can be passed as a "device" to
most of the functions in the IO
module.
Examples
iex> {:ok, pid} = StringIO.open("foo")
iex> IO.read(pid, 2)
"fo"
Link to this section Summary
Functions
Returns a specification to start this module under a supervisor
Stops the IO device and returns the remaining input/output buffers
Returns the current input/output buffers for the given IO device
Flushes the output buffer and returns its current contents
Creates an IO device
Creates an IO device
Link to this section Functions
child_spec(init_arg) View Source
Returns a specification to start this module under a supervisor.
See Supervisor
.
close(pid) View Source
Stops the IO device and returns the remaining input/output buffers.
Examples
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.close(pid)
{:ok, {"in", "out"}}
contents(pid) View Source
Returns the current input/output buffers for the given IO device.
Examples
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.contents(pid)
{"in", "out"}
flush(pid) View Source
Flushes the output buffer and returns its current contents.
Examples
iex> {:ok, pid} = StringIO.open("in")
iex> IO.write(pid, "out")
iex> StringIO.flush(pid)
"out"
iex> StringIO.contents(pid)
{"in", ""}
open(string, options_or_function \\ []) View Source
Creates an IO device.
string
will be the initial input of the newly created
device.
options_or_function
can be a keyword list of options or
a function.
If options are provided, the result will be {:ok, pid}
, returning the
IO device created. The option :capture_prompt
, when set to true
, causes
prompts (which are specified as arguments to IO.get*
functions) to be
included in the device's output.
If a function is provided, the device will be created and sent to the
function. When the function returns, the device will be closed. The final
result will be a tuple with :ok
and the result of the function.
Examples
iex> {:ok, pid} = StringIO.open("foo")
iex> IO.gets(pid, ">")
"foo"
iex> StringIO.contents(pid)
{"", ""}
iex> {:ok, pid} = StringIO.open("foo", capture_prompt: true)
iex> IO.gets(pid, ">")
"foo"
iex> StringIO.contents(pid)
{"", ">"}
iex> StringIO.open("foo", fn pid ->
...> input = IO.gets(pid, ">")
...> IO.write(pid, "The input was #{input}")
...> StringIO.contents(pid)
...> end)
{:ok, {"", "The input was foo"}}
open(string, options, function) View Source (since 1.7.0)
Creates an IO device.
string
will be the initial input of the newly created
device.
If the :capture_prompt
option is set to true
,
prompts (specified as arguments to IO.get*
functions)
are captured in the output.
The device will be created and sent to the function given.
When the function returns, the device will be closed. The final
result will be a tuple with :ok
and the result of the function.
Examples
iex> StringIO.open("foo", [], fn pid ->
...> input = IO.gets(pid, ">")
...> IO.write(pid, "The input was #{input}")
...> StringIO.contents(pid)
...> end)
{:ok, {"", "The input was foo"}}
iex> StringIO.open("foo", [capture_prompt: true], fn pid ->
...> input = IO.gets(pid, ">")
...> IO.write(pid, "The input was #{input}")
...> StringIO.contents(pid)
...> end)
{:ok, {"", ">The input was foo"}}