<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="x-ua-compatible" content="ie=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="generator" content="ExDoc v0.19.1"> <title>StringIO – Elixir v1.7.2</title> <link rel="stylesheet" href="dist/app-240d7fc7e5.css" /> <link rel="canonical" href="https://hexdocs.pm/elixir/v1.7/StringIO.html" /> <script src="dist/sidebar_items-cdf4e58b19.js"></script> </head> <body data-type="modules"> <script>try { if(localStorage.getItem('night-mode')) document.body.className += ' night-mode'; } catch (e) { }</script> <div class="main"> <button class="sidebar-button sidebar-toggle"> <span class="icon-menu" aria-hidden="true"></span> <span class="sr-only">Toggle Sidebar</span> </button> <button class="sidebar-button night-mode-toggle"> <span class="icon-theme" aria-hidden="true"></span> <span class="sr-only">Toggle Theme</span> </button> <section class="sidebar"> <a href="http://elixir-lang.org/docs.html" class="sidebar-projectLink"> <div class="sidebar-projectDetails"> <h1 class="sidebar-projectName"> Elixir </h1> <h2 class="sidebar-projectVersion"> v1.7.2 </h2> </div> <img src="assets/logo.png" alt="Elixir" class="sidebar-projectImage"> </a> <form class="sidebar-search" action="search.html"> <button type="submit" class="search-button"> <span class="icon-search" aria-hidden="true"></span> </button> <input name="q" type="text" id="search-list" class="search-input" placeholder="Search" aria-label="Search" autocomplete="off" /> </form> <ul class="sidebar-listNav"> <li><a id="extras-list" href="#full-list">Pages</a></li> <li><a id="modules-list" href="#full-list">Modules</a></li> <li><a id="exceptions-list" href="#full-list">Exceptions</a></li> </ul> <div class="gradient"></div> <ul id="full-list" class="sidebar-fullList"></ul> </section> <section class="content"> <div class="content-outer"> <div id="content" class="content-inner"> <h1> <small class="visible-xs">Elixir v1.7.2</small> StringIO <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L1" title="View Source" class="view-source" rel="help"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> </h1> <section id="moduledoc"> <p>Controls an IO device process that wraps a string.</p> <p>A <a href="StringIO.html#content"><code class="inline">StringIO</code></a> IO device can be passed as a “device” to most of the functions in the <a href="IO.html"><code class="inline">IO</code></a> module.</p> <h2 id="module-examples" class="section-heading"> <a href="#module-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="p" data-group-id="1142731869-1">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="1142731869-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="1142731869-2">(</span><span class="s">"foo"</span><span class="p" data-group-id="1142731869-2">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">read</span><span class="p" data-group-id="1142731869-3">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p" data-group-id="1142731869-3">)</span><span class="w"> </span><span class="s">"fo"</span></code></pre> </section> <section id="summary" class="details-list"> <h1 class="section-heading"> <a class="hover-link" href="#summary"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this section</span> </a> Summary </h1> <div class="summary-functions summary"> <h2> <a href="#functions">Functions</a> </h2> <div class="summary-row"> <div class="summary-signature"> <a href="#child_spec/1">child_spec(arg)</a> </div> <div class="summary-synopsis"><p>Returns a specification to start this module under a supervisor</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="#close/1">close(pid)</a> </div> <div class="summary-synopsis"><p>Stops the IO device and returns the remaining input/output buffers</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="#contents/1">contents(pid)</a> </div> <div class="summary-synopsis"><p>Returns the current input/output buffers for the given IO device</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="#flush/1">flush(pid)</a> </div> <div class="summary-synopsis"><p>Flushes the output buffer and returns its current contents</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="#open/2">open(path, options_or_function \\ [])</a> </div> <div class="summary-synopsis"><p>Creates an IO device</p> </div> </div> <div class="summary-row"> <div class="summary-signature"> <a href="#open/3">open(string, options, function)</a> </div> <div class="summary-synopsis"><p>Creates an IO device</p> </div> </div> </div> </section> <section id="functions" class="details-list"> <h1 class="section-heading"> <a class="hover-link" href="#functions"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this section</span> </a> Functions </h1> <div class="detail" id="child_spec/1"> <div class="detail-header"> <a href="#child_spec/1" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">child_spec(arg)</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L16" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> </div> <section class="docstring"> <p>Returns a specification to start this module under a supervisor.</p> <p>See <a href="Supervisor.html"><code class="inline">Supervisor</code></a>.</p> </section> </div> <div class="detail" id="close/1"> <div class="detail-header"> <a href="#close/1" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">close(pid)</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L163" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> <div class="specs"> <pre>close(<a href="typespecs.html#basic-types">pid</a>()) :: {:ok, {<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">binary</a>()}}</pre> </div> </div> <section class="docstring"> <p>Stops the IO device and returns the remaining input/output buffers.</p> <h2 id="close/1-examples" class="section-heading"> <a href="#close/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="p" data-group-id="3530886991-1">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="3530886991-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="3530886991-2">(</span><span class="s">"in"</span><span class="p" data-group-id="3530886991-2">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="3530886991-3">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"out"</span><span class="p" data-group-id="3530886991-3">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">close</span><span class="p" data-group-id="3530886991-4">(</span><span class="n">pid</span><span class="p" data-group-id="3530886991-4">)</span><span class="w"> </span><span class="p" data-group-id="3530886991-5">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="3530886991-6">{</span><span class="s">"in"</span><span class="p">,</span><span class="w"> </span><span class="s">"out"</span><span class="p" data-group-id="3530886991-6">}</span><span class="p" data-group-id="3530886991-5">}</span></code></pre> </section> </div> <div class="detail" id="contents/1"> <div class="detail-header"> <a href="#contents/1" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">contents(pid)</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L128" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> <div class="specs"> <pre>contents(<a href="typespecs.html#basic-types">pid</a>()) :: {<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">binary</a>()}</pre> </div> </div> <section class="docstring"> <p>Returns the current input/output buffers for the given IO device.</p> <h2 id="contents/1-examples" class="section-heading"> <a href="#contents/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="p" data-group-id="9126780749-1">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="9126780749-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="9126780749-2">(</span><span class="s">"in"</span><span class="p" data-group-id="9126780749-2">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="9126780749-3">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"out"</span><span class="p" data-group-id="9126780749-3">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="9126780749-4">(</span><span class="n">pid</span><span class="p" data-group-id="9126780749-4">)</span><span class="w"> </span><span class="p" data-group-id="9126780749-5">{</span><span class="s">"in"</span><span class="p">,</span><span class="w"> </span><span class="s">"out"</span><span class="p" data-group-id="9126780749-5">}</span></code></pre> </section> </div> <div class="detail" id="flush/1"> <div class="detail-header"> <a href="#flush/1" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">flush(pid)</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L146" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> <div class="specs"> <pre>flush(<a href="typespecs.html#basic-types">pid</a>()) :: <a href="typespecs.html#built-in-types">binary</a>()</pre> </div> </div> <section class="docstring"> <p>Flushes the output buffer and returns its current contents.</p> <h2 id="flush/1-examples" class="section-heading"> <a href="#flush/1-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="p" data-group-id="2822726022-1">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="2822726022-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="2822726022-2">(</span><span class="s">"in"</span><span class="p" data-group-id="2822726022-2">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="2822726022-3">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"out"</span><span class="p" data-group-id="2822726022-3">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">flush</span><span class="p" data-group-id="2822726022-4">(</span><span class="n">pid</span><span class="p" data-group-id="2822726022-4">)</span><span class="w"> </span><span class="s">"out"</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="2822726022-5">(</span><span class="n">pid</span><span class="p" data-group-id="2822726022-5">)</span><span class="w"> </span><span class="p" data-group-id="2822726022-6">{</span><span class="s">"in"</span><span class="p">,</span><span class="w"> </span><span class="s">""</span><span class="p" data-group-id="2822726022-6">}</span></code></pre> </section> </div> <div class="detail" id="open/2"> <span id="open/1"></span> <div class="detail-header"> <a href="#open/2" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">open(path, options_or_function \\ [])</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L110" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> <div class="specs"> <pre>open(<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">keyword</a>()) :: {:ok, <a href="typespecs.html#basic-types">pid</a>()}</pre> <pre>open(<a href="typespecs.html#built-in-types">binary</a>(), (<a href="typespecs.html#basic-types">pid</a>() -> res)) :: {:ok, res} when res: var</pre> </div> </div> <section class="docstring"> <p>Creates an IO device.</p> <p><code class="inline">string</code> will be the initial input of the newly created device.</p> <p><code class="inline">options_or_function</code> can be a keyword list of options or a function.</p> <p>If options are provided, the result will be <code class="inline">{:ok, pid}</code>, returning the IO device created. The option <code class="inline">:capture_prompt</code>, when set to <code class="inline">true</code>, causes prompts (which are specified as arguments to <code class="inline">IO.get*</code> functions) to be included in the device’s output.</p> <p>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 <code class="inline">:ok</code> and the result of the function.</p> <h2 id="open/2-examples" class="section-heading"> <a href="#open/2-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="p" data-group-id="3147628275-1">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="3147628275-1">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="3147628275-2">(</span><span class="s">"foo"</span><span class="p" data-group-id="3147628275-2">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="p" data-group-id="3147628275-3">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="3147628275-3">)</span><span class="w"> </span><span class="s">"foo"</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="3147628275-4">(</span><span class="n">pid</span><span class="p" data-group-id="3147628275-4">)</span><span class="w"> </span><span class="p" data-group-id="3147628275-5">{</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="s">""</span><span class="p" data-group-id="3147628275-5">}</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="p" data-group-id="3147628275-6">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="n">pid</span><span class="p" data-group-id="3147628275-6">}</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="3147628275-7">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="ss">capture_prompt</span><span class="p">:</span><span class="w"> </span><span class="no">true</span><span class="p" data-group-id="3147628275-7">)</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="p" data-group-id="3147628275-8">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="3147628275-8">)</span><span class="w"> </span><span class="s">"foo"</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="3147628275-9">(</span><span class="n">pid</span><span class="p" data-group-id="3147628275-9">)</span><span class="w"> </span><span class="p" data-group-id="3147628275-10">{</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="3147628275-10">}</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="3147628275-11">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="k" data-group-id="3147628275-12">fn</span><span class="p" data-group-id="3147628275-13">(</span><span class="n">pid</span><span class="p" data-group-id="3147628275-13">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="n">input</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="p" data-group-id="3147628275-14">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="3147628275-14">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="3147628275-15">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"The input was </span><span class="si" data-group-id="3147628275-16">#{</span><span class="n">input</span><span class="si" data-group-id="3147628275-16">}</span><span class="s">"</span><span class="p" data-group-id="3147628275-15">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="3147628275-17">(</span><span class="n">pid</span><span class="p" data-group-id="3147628275-17">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="k" data-group-id="3147628275-12">end</span><span class="p" data-group-id="3147628275-11">)</span><span class="w"> </span><span class="p" data-group-id="3147628275-18">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="3147628275-19">{</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="s">"The input was foo"</span><span class="p" data-group-id="3147628275-19">}</span><span class="p" data-group-id="3147628275-18">}</span></code></pre> </section> </div> <div class="detail" id="open/3"> <div class="detail-header"> <a href="#open/3" class="detail-link" title="Link to this function"> <span class="icon-link" aria-hidden="true"></span> <span class="sr-only">Link to this function</span> </a> <span class="signature">open(string, options, function)</span> <a href="https://github.com/elixir-lang/elixir/blob/v1.7.2/lib/elixir/lib/string_io.ex#L51" class="view-source" rel="help" title="View Source"> <span class="icon-code" aria-hidden="true"></span> <span class="sr-only">View Source</span> </a> <span class="note">(since 1.7.0)</span> <div class="specs"> <pre>open(<a href="typespecs.html#built-in-types">binary</a>(), <a href="typespecs.html#built-in-types">keyword</a>(), (<a href="typespecs.html#basic-types">pid</a>() -> res)) :: {:ok, res} when res: var</pre> </div> </div> <section class="docstring"> <p>Creates an IO device.</p> <p><code class="inline">string</code> will be the initial input of the newly created device.</p> <p>If the <code class="inline">:capture_prompt</code> option is set to <code class="inline">true</code>, prompts (specified as arguments to <code class="inline">IO.get*</code> functions) are captured in the output.</p> <p>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 <code class="inline">:ok</code> and the result of the function.</p> <h2 id="open/3-examples" class="section-heading"> <a href="#open/3-examples" class="hover-link"><span class="icon-link" aria-hidden="true"></span></a> Examples </h2> <pre><code class="nohighlight makeup elixir"><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="1318303380-1">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1318303380-2">[</span><span class="p" data-group-id="1318303380-2">]</span><span class="p">,</span><span class="w"> </span><span class="k" data-group-id="1318303380-3">fn</span><span class="p" data-group-id="1318303380-4">(</span><span class="n">pid</span><span class="p" data-group-id="1318303380-4">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="n">input</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="p" data-group-id="1318303380-5">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="1318303380-5">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="1318303380-6">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"The input was </span><span class="si" data-group-id="1318303380-7">#{</span><span class="n">input</span><span class="si" data-group-id="1318303380-7">}</span><span class="s">"</span><span class="p" data-group-id="1318303380-6">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="1318303380-8">(</span><span class="n">pid</span><span class="p" data-group-id="1318303380-8">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="k" data-group-id="1318303380-3">end</span><span class="p" data-group-id="1318303380-1">)</span><span class="w"> </span><span class="p" data-group-id="1318303380-9">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1318303380-10">{</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="s">"The input was foo"</span><span class="p" data-group-id="1318303380-10">}</span><span class="p" data-group-id="1318303380-9">}</span><span class="w"> </span><span class="gp unselectable">iex> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">open</span><span class="p" data-group-id="1318303380-11">(</span><span class="s">"foo"</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1318303380-12">[</span><span class="ss">capture_prompt</span><span class="p">:</span><span class="w"> </span><span class="no">true</span><span class="p" data-group-id="1318303380-12">]</span><span class="p">,</span><span class="w"> </span><span class="k" data-group-id="1318303380-13">fn</span><span class="p" data-group-id="1318303380-14">(</span><span class="n">pid</span><span class="p" data-group-id="1318303380-14">)</span><span class="w"> </span><span class="o">-></span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="n">input</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">gets</span><span class="p" data-group-id="1318303380-15">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">">"</span><span class="p" data-group-id="1318303380-15">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">IO</span><span class="o">.</span><span class="n">write</span><span class="p" data-group-id="1318303380-16">(</span><span class="n">pid</span><span class="p">,</span><span class="w"> </span><span class="s">"The input was </span><span class="si" data-group-id="1318303380-17">#{</span><span class="n">input</span><span class="si" data-group-id="1318303380-17">}</span><span class="s">"</span><span class="p" data-group-id="1318303380-16">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="w"> </span><span class="nc">StringIO</span><span class="o">.</span><span class="n">contents</span><span class="p" data-group-id="1318303380-18">(</span><span class="n">pid</span><span class="p" data-group-id="1318303380-18">)</span><span class="w"> </span><span class="gp unselectable">...> </span><span class="k" data-group-id="1318303380-13">end</span><span class="p" data-group-id="1318303380-11">)</span><span class="w"> </span><span class="p" data-group-id="1318303380-19">{</span><span class="ss">:ok</span><span class="p">,</span><span class="w"> </span><span class="p" data-group-id="1318303380-20">{</span><span class="s">""</span><span class="p">,</span><span class="w"> </span><span class="s">">The input was foo"</span><span class="p" data-group-id="1318303380-20">}</span><span class="p" data-group-id="1318303380-19">}</span></code></pre> </section> </div> </section> <footer class="footer"> <p> <span class="line"> Built using <a href="https://github.com/elixir-lang/ex_doc" title="ExDoc" target="_blank" rel="help noopener">ExDoc</a> (v0.19.1), </span> <span class="line"> designed by <a href="https://twitter.com/dignifiedquire" target="_blank" rel="noopener" title="@dignifiedquire">Friedel Ziegelmayer</a>. </span> </p> </footer> </div> </div> </section> </div> <script src="dist/app-a0c90688fa.js"></script> </body> </html>