StringIO
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"
Summary
Functions
- child_spec(init_arg)
Returns a specification to start this module under a supervisor.
- close(pid)
Stops the IO device and returns the remaining input/output buffers.
- contents(pid)
Returns the current input/output buffers for the given IO device.
- flush(pid)
Flushes the output buffer and returns its current contents.
- open(string, options_or_function \\ [])
Creates an IO device.
- open(string, options, function)
Creates an IO device.
Functions
child_spec(init_arg)
Returns a specification to start this module under a supervisor.
See Supervisor
.
close(pid)
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"}}
contents(pid)
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"}
flush(pid)
flush(pid()) :: binary()
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 \\ [])
open(binary(), keyword()) :: {:ok, pid()}
open(binary(), (pid() -> res)) :: {:ok, res} when res: var
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)
(since 1.7.0)open(binary(), keyword(), (pid() -> res)) :: {:ok, res} when res: var
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"}}
© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/elixir/1.8.2/StringIO.html