José Valim <jose.va...@plataformatec.com.br> wrote:
> import_iex_helpers sounds like an interesting idea. Is there any helper we
> would use besides flush()?

probably yes,
such as pid/1,3 pwd/0, maybe ls/1


> 
> *José Valim*
> www.plataformatec.com.br
> Skype: jv.ptec
> Founder and Director of R&D
> 
> On Mon, May 8, 2017 at 4:59 PM, eksperimental <eksperimen...@autistici.org>
> wrote:
> 
> > I have been working on a few improvements for doctests.
> > Everything that I'm proposing here has already been implemented.
> > The proposals started because some modules in Elixir are not being tested
> > with doctests, and this
> > is because there are certain limitation in doctest. These improvements aim
> > to eliminate those.
> >
> > My proposal consist of two main points:
> >
> > 1) Streamline Doctests with regular examples.
> > Currently some examples need to be expressed in regular code, not in IEx
> > examples, because some
> > features are not supported.
> >
> > -- a) Include comments in doctest syntax.
> >    We should allow full-line comments in code (currently only comments
> > after evaluated expressions
> >    are allowed). My proposal is to have three different kind of comments.
> >
> > ---- I) Regular comments, such as:
> >      # this is a regular comment
> >      iex> true
> >      true
> >
> > ---- II) Return value comments.
> >      These are useful when we will not get the same value everytime the
> > function is run.
> >
> >      iex> spawn(fn -> true end)
> >      #=> PID<0.97.0>
> >
> > ---- III) Print comments.
> >      Currently it is not clear when a value is returned or printed on
> > screen (stdout/stderr), so my
> >      proposal is to create a new convention for this. My suggestion is to
> > use "#>> ", but it could
> >      be anything.
> >
> >      iex> IO.puts "Elixir"
> >      #>> Elixir
> >      :ok
> >
> > 2) Mimic IEx by allowing user to import IEx.Helpers, which are
> > automatically imported when IEx is
> > loaded.
> > I came across this when I was trying to run doctests in the Port module.
> > In the examples the
> > flush/0 function is used which is imported from IEx.Helpers. Currently it
> > is impossible simulate a
> > doctest if the whole IEx environment is required, without explicitly
> > importing IEx.Helpers.
> > So my proposal is to add an option :import_iex_helpers, which works the
> > same way as :import
> > option, taking :true, :false, :only, and :except values (default value is
> > :false).
> >
> >
> >     doctest ModuleToDocTest, import_iex_helpers: true
> >
> > or
> >     doctest ModuleToDocTest, import_iex_helpers: [only: [flush: 0]]
> >
> >
> > this way the first example in the Port module could be doctested as:
> >
> >       iex> port = Port.open({:spawn, "cat"}, [:binary])
> >       #=> #Port<0.1444>
> >       iex> send port, {self(), {:command, "hello"}}
> >       #=> {#PID<0.80.0>, {:command, "hello"}}
> >       iex> send port, {self(), {:command, "world"}}
> >       #=> {#PID<0.80.0>, {:command, "world"}}
> >       iex> flush()
> >       #>> {#Port<0.1444>, {:data, "hello"}}
> >       #>> {#Port<0.1444>, {:data, "world"}}
> >       :ok
> >       iex> send port, {self(), :close}
> >       #=> {#PID<0.80.0>, :close}
> >       iex> flush()
> >       #>> {#Port<0.1444>, :closed}
> >       :ok
> >
> >
> > The implemented and tested code can be found here:
> > https://github.com/eksperimental/elixir/tree/doctest_improvements3
> >
> > Thank you for reading and looking forward for your feedback.
> >
> > --
> > You received this message because you are subscribed to the Google Groups
> > "elixir-lang-core" group.
> > To unsubscribe from this group and stop receiving emails from it, send an
> > email to elixir-lang-core+unsubscr...@googlegroups.com.
> > To view this discussion on the web visit https://groups.google.com/d/
> > msgid/elixir-lang-core/20170508215910.65ffd36a.
> > eksperimental%40autistici.org.
> > For more options, visit https://groups.google.com/d/optout.
> >
> 

-- 
You received this message because you are subscribed to the Google Groups 
"elixir-lang-core" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to elixir-lang-core+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/20170508221114.566fbbee.eksperimental%40autistici.org.
For more options, visit https://groups.google.com/d/optout.

Reply via email to