We would recommend folks to develop this as a separate project and explore
the design decisions on this space.



*José Valim*
www.plataformatec.com.br
Skype: jv.ptec
Founder and Director of R&D

On Fri, Mar 17, 2017 at 5:47 AM, miwee <[email protected]> wrote:

> While going through one of the threads, I found this:
>
> defmodule MyAgent do
>   use Agent, restart: :transient
>   # Generated on: use Agent  # def child_spec(opts) do  #   %{id: MyAgent, 
> start: {__MODULE__, :start_link, [opts]}, restart: :transient}  # end
>
>   def start_link(opts) do
>     Agent.start_link(fn -> %{} end, opts)
>   end
>
>   ...end
>
> Notice the commented portion starting with "# Generated on: use Agent". The 
> code generated by macro "use Agent" is neatly present as comments. Anyone can 
> inspect the code and understand what is happening behind the scene.
>
> Some details:
> 1) Widely used and straightforward macros like if, def, defmodule etc. are 
> excluded. The focus should be on documenting only those macros, which are 
> application specific (like use Ecto.Schema)
> 2) Whenever the command is run (let's call it "mix annotate"), it goes 
> through source code directory (lib folder primarily) and recreates annotated 
> code files (mixed with commented macro code) in a separate folder. It should 
> not modify the existing source files.
> 3) Since macros usually take options, there can be a new option like "use 
> Agent, annotate: true". This way only those macros are expanded which are 
> explicitly marked for annotation.
> 4) Similarly there can be a module attribute like "@annotate true" or 
> "@annotate false". This way individual modules can be explicitly marked for 
> annotation.
>
> thanks
> miwee
>
> --
> 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 [email protected].
> To view this discussion on the web visit https://groups.google.com/d/
> msgid/elixir-lang-core/2491efbe-55b3-4c95-be32-
> 860a84b0a527%40googlegroups.com
> <https://groups.google.com/d/msgid/elixir-lang-core/2491efbe-55b3-4c95-be32-860a84b0a527%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> 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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/elixir-lang-core/CAGnRm4LPgFKos%3DqoAG3PEG01RcWNe2O6XXKMVgx68k50hWQigA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to