у меня что-о типа такого
Funs = [
{mnesia_dir, 0, MnesiaDir, string},
{apiip, 0, APIIP, term},
{statapiip, 0, StatAPIIP, term},
{reverse_proxy_ip, 0, RevProxyIPs, term},
{random_ip, 0, RandomIP, atom},
{brand, 0, Brand, atom},
{reverse_proxy, 0, ReverseProxy, atom},
{inroute, 0, InROute, string},
{blockpost, 0, BlockPost, boolean},
{admin_log_enabled, 0, AdminLogEnabled, atom},
{startunix, 0, StartUnix, integer},
{startunixbin, 0, integer_to_binary(StartUnix), binary}
],
make_module(ModuleName, Funs) ->
Module = erl_syntax:attribute(erl_syntax:atom(module), [erl_syntax:atom(ModuleName)]),
ModForm = erl_syntax:revert(Module),
Export = erl_syntax:attribute(
erl_syntax:atom(export), [
erl_syntax:list(
[erl_syntax:arity_qualifier(erl_syntax:atom(FunName), erl_syntax:integer(Arity)) || {FunName, Arity, _, _} <- Funs]
)
]
),
ExportForm = erl_syntax:revert(Export),
FunsAst = lists:foldl(
fun(FunRec, Acc) ->
[make_fun_ast(FunRec) | Acc]
end,
[],
Funs
),
{ok, Mod, Bin1} = compile:forms([ModForm, ExportForm | FunsAst]),
{module, _} = code:load_binary(Mod, [], Bin1),
ok.