Executando código na documentação de projetos Elixir

29/08/2022 tipselixir

Algo que passou um pouco despercebido por mim no meus primeiros meses de Elixir, é que documentação (@moduledoc, @doc) são simplesmente module attributes, isso é, código que é executado durante a compilação como qualquer outra anotação com @, que você pode usar para guardar constantes, mapas, dados vindos de environments, etc.

Nosso @moduledoc e @doc são simplesmente strings, e podemos tratar essas strings como qualquer outra: com interpolação, concatenação, replacements, etc... ou até mesmo gerar elas dinamicamente.

Alguns exemplos na prática:


O legal é que mesmo que você não gere documentação para seu projeto, você ainda vai poder desfrutar das suas docs dinâmicas através de ferramentas como o ElixirLS para trazer informações ricas sobre seus módulos e funções diretamente no seu editor.