Packages
nova
0.14.3
0.15.1
0.14.3
0.14.1
0.13.7
0.13.1
0.13.0
0.12.1
0.12.0
0.11.0
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.24
0.9.23
0.9.22
0.9.21
0.9.20
0.9.19
0.9.18
0.9.17
0.9.16
0.9.15
0.9.11
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.6
0.8.5
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.4.4
0.4.3
0.4.2
0.4.1
0.2.2
0.1.0
0.0.1
0.0.0
Nova is a web application framework
Current section
Files
Jump to
Current section
Files
src/nova_controller.erl
%%% @doc
%%% Nova Controller behaviour definition
%%% @end
-module(nova_controller).
-export([routes/2]).
-optional_callbacks([routes/2]).
%% @doc Returns the routes defined in the module, if any
-callback routes(Env :: atom(), Opts :: map()) -> Routes :: [map()].
-spec routes(module() | {module(), map()}, Env :: atom()) -> Routes :: [map()].
routes({Module, Opts}, Env) when is_map(Opts) ->
routes(Module, Env, Opts);
routes(Module, Env) ->
routes(Module, Env, #{}).
routes(Module, Env, Opts) ->
%% try to ensure callback module is loaded first
try Module:module_info(module)
catch _:_ -> ok
end,
case erlang:function_exported(Module, routes, 2) of
true ->
Module:routes(Env, Opts);
false ->
[]
end.