A library for adding information of code authors to compiled Erlang modules.
Suppose we have following module named test.erl:
-module(test).
-export([help/0, sum/2, sum/3]).
help() ->
io:format("Use sum/2 for two integers\n"
"Use sum/3 for three integers\n").
sum(Arg1, Arg2) ->
Arg1 + Arg2.
sum(Arg1, Arg2, Arg3) ->
Arg1 + Arg2 + Arg3.Before compile, define attribute
-compile({parse_transform, eauthor}).in your module or include eauthor's header file eauthor.hrl in your module
-include("PATH/TO/eauthor.hrl").
%% or if eauthor is part of your project
-include_lib("eauthor/include/eauthor.hrl").or define flag {parse_transform, eauthor} for compiler.
After compile, our module has new function named authors/0
%% For doing this, compiler should access to compiled eauthor module.
%% So i add path to file eauthor.beam. (i used rebar3 for compiling eauthor)
1> code:add_patha("_build/default/lib/eauthor/ebin").
true
2> compile:file("test.erl", {parse_transform, eauthor}).
{ok,test}
3> test:authors().
#{{help,0} => undefined,{sum,2} => undefined,{sum,3} => undefined}{help,0} means function help/0, {sum,2} means function sum/2 and so on. Because we did not define anything about authors, we have undefined value in above. Edite the code to:
-module(test).
-export([help/0, sum/2, sum/3]).
%% Add 'author' attribute. This is author of module.
-author("foo").
-include("_build/default/lib/eauthor/include/eauthor.hrl").
%% This is author of next function (help/0)
-function_author("bar").
help() ->
io:format("Use sum/2 for two integers\n"
"Use sum/3 for three integers\n").
%% Its author will be module's author ("foo")
sum(Arg1, Arg2) ->
Arg1 + Arg2.
-function_author("baz").
sum(Arg1, Arg2, Arg3) ->
Arg1 + Arg2 + Arg3.Save file and back to shell:
%% I included eauthor's header file, so i don't need define {parse_transform, eauthor} again.
4> c(test).
{ok,test}
5> test:authors().
#{{help,0} => "bar",{sum,2} => "foo",{sum,3} => "baz"}pouriya.jahanbakhsh@gmail.com
BSD 3-Clause