mirror of
https://github.com/ninenines/cowboy.git
synced 2025-07-14 20:30:23 +00:00
29 lines
753 B
Erlang
29 lines
753 B
Erlang
%% Feel free to use, reuse and abuse the code in this file.
|
|
|
|
-module(markdown_converter).
|
|
-behaviour(cowboy_middleware).
|
|
|
|
-export([execute/2]).
|
|
|
|
execute(Req, Env) ->
|
|
[Path] = cowboy_req:path_info(Req),
|
|
case filename:extension(Path) of
|
|
<<".html">> -> maybe_generate_markdown(resource_path(Path));
|
|
_Ext -> ok
|
|
end,
|
|
{ok, Req, Env}.
|
|
|
|
maybe_generate_markdown(Path) ->
|
|
ModifiedAt = filelib:last_modified(source_path(Path)),
|
|
GeneratedAt = filelib:last_modified(Path),
|
|
case ModifiedAt > GeneratedAt of
|
|
true -> markdown:conv_file(source_path(Path), Path);
|
|
false -> ok
|
|
end.
|
|
|
|
resource_path(Path) ->
|
|
PrivDir = code:priv_dir(markdown_middleware),
|
|
filename:join([PrivDir, Path]).
|
|
|
|
source_path(Path) ->
|
|
<< (filename:rootname(Path))/binary, ".md" >>.
|