aboutsummaryrefslogtreecommitdiffstats
path: root/examples/markdown_middleware/src/markdown_converter.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2013-02-09 21:14:45 +0100
committerLoïc Hoguin <[email protected]>2013-02-09 21:14:45 +0100
commit6879cd885954ba3e1a379b1f3dc1569fd1375925 (patch)
treed2a6696d12711a06d1d6a351822d33260dd526a7 /examples/markdown_middleware/src/markdown_converter.erl
parent26935cbfb021632eb8f932af43737fdbfcfad128 (diff)
parent09f1a8d55bdd16e32de81d953ed281338db0cf89 (diff)
downloadcowboy-6879cd885954ba3e1a379b1f3dc1569fd1375925.tar.gz
cowboy-6879cd885954ba3e1a379b1f3dc1569fd1375925.tar.bz2
cowboy-6879cd885954ba3e1a379b1f3dc1569fd1375925.zip
Merge branch 'add_middleware_example' of git://github.com/acammack/cowboy
Diffstat (limited to 'examples/markdown_middleware/src/markdown_converter.erl')
-rw-r--r--examples/markdown_middleware/src/markdown_converter.erl29
1 files changed, 29 insertions, 0 deletions
diff --git a/examples/markdown_middleware/src/markdown_converter.erl b/examples/markdown_middleware/src/markdown_converter.erl
new file mode 100644
index 0000000..24bb132
--- /dev/null
+++ b/examples/markdown_middleware/src/markdown_converter.erl
@@ -0,0 +1,29 @@
+%% 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], Req1} = cowboy_req:path_info(Req),
+ case filename:extension(Path) of
+ <<".html">> -> maybe_generate_markdown(resource_path(Path));
+ _Ext -> ok
+ end,
+ {ok, Req1, Env}.
+
+maybe_generate_markdown(Path) ->
+ ModifiedAt = filelib:last_modified(source_path(Path)),
+ GeneratedAt = filelib:last_modified(Path),
+ case ModifiedAt > GeneratedAt of
+ true -> erlmarkdown:conv_file(source_path(Path), Path);
+ false -> ok
+ end.
+
+resource_path(Path) ->
+ {ok, Cwd} = file:get_cwd(),
+ filename:join([Cwd, "priv", Path]).
+
+source_path(Path) ->
+ << (filename:rootname(Path))/binary, ".md" >>.