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.
