Elixir v1.6.0 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

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

Link to this section Functions

Link to this function close(pid) View Source
close(pid()) :: {:ok, {binary(), binary()}}

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"}}
Link to this function contents(pid) View Source
contents(pid()) :: {binary(), binary()}

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"}

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", ""}
Link to this function open(string, options \\ []) View Source
open(binary(), keyword()) :: {:ok, pid()}

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.

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)
{"", ">"}