Просмотр исходного кода

Merge branch 'patch-2' of https://github.com/brigadier/erlang.mk

Loïc Hoguin 10 лет назад
Родитель
Сommit
a2e0f9cc31
3 измененных файлов с 26 добавлено и 7 удалено
  1. 8 1
      README.md
  2. 9 3
      erlang.mk
  3. 9 3
      plugins/erlydtl.mk

+ 8 - 1
README.md

@@ -367,7 +367,14 @@ ErlyDTL plugin
 
 This plugin is available by default. It adds automatic
 compilation of ErlyDTL templates found in `templates/*.dtl`
-or any subdirectory.
+or any subdirectory. 
+
+By default it ignores names of subdirectories and compiles 
+`a/b/templatename.dtl` into `templatename_dtl.beam`. To include 
+subdirectories names in the compiled module name add 
+`DTL_FULL_PATH=1` into your Makefile - `a/b/templatename.dtl`
+will be compiled into `a_b_templatename_dtl.beam`.
+
 
 Escript plugin
 --------------

+ 9 - 3
erlang.mk

@@ -918,6 +918,10 @@ distclean-elvis:
 # Copyright (c) 2013-2014, Loïc Hoguin <essen@ninenines.eu>
 # This file is part of erlang.mk and subject to the terms of the ISC License.
 
+# Configuration.
+
+DTL_FULL_PATH ?= 0
+
 # Verbosity.
 
 dtl_verbose_0 = @echo " DTL   " $(filter %.dtl,$(?F));
@@ -928,9 +932,11 @@ dtl_verbose = $(dtl_verbose_$(V))
 define compile_erlydtl
 	$(dtl_verbose) erl -noshell -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \
 		Compile = fun(F) -> \
-			Module = list_to_atom( \
-				string:to_lower(filename:basename(F, ".dtl")) ++ "_dtl"), \
-			erlydtl:compile(F, Module, [{out_dir, "ebin/"}]) \
+			S = fun (1) -> re:replace(filename:rootname(string:sub_string(F, 11), ".dtl"), "/",  "_",  [{return, list}, global]); \
+				(0) -> filename:basename(F, ".dtl") \
+			end, \
+			Module = list_to_atom(string:to_lower(S($(DTL_FULL_PATH))) ++ "_dtl"), \
+			{ok, _} = erlydtl:compile(F, Module, [{out_dir, "ebin/"}, return_errors, {doc_root, "templates"}]) \
 		end, \
 		_ = [Compile(F) || F <- string:tokens("$(1)", " ")], \
 		init:stop()'

+ 9 - 3
plugins/erlydtl.mk

@@ -1,6 +1,10 @@
 # Copyright (c) 2013-2014, Loïc Hoguin <essen@ninenines.eu>
 # This file is part of erlang.mk and subject to the terms of the ISC License.
 
+# Configuration.
+
+DTL_FULL_PATH ?= 0
+
 # Verbosity.
 
 dtl_verbose_0 = @echo " DTL   " $(filter %.dtl,$(?F));
@@ -11,9 +15,11 @@ dtl_verbose = $(dtl_verbose_$(V))
 define compile_erlydtl
 	$(dtl_verbose) erl -noshell -pa ebin/ $(DEPS_DIR)/erlydtl/ebin/ -eval ' \
 		Compile = fun(F) -> \
-			Module = list_to_atom( \
-				string:to_lower(filename:basename(F, ".dtl")) ++ "_dtl"), \
-			erlydtl:compile(F, Module, [{out_dir, "ebin/"}]) \
+			S = fun (1) -> re:replace(filename:rootname(string:sub_string(F, 11), ".dtl"), "/",  "_",  [{return, list}, global]); \
+				(0) -> filename:basename(F, ".dtl") \
+			end, \
+			Module = list_to_atom(string:to_lower(S($(DTL_FULL_PATH))) ++ "_dtl"), \
+			{ok, _} = erlydtl:compile(F, Module, [{out_dir, "ebin/"}, return_errors, {doc_root, "templates"}]) \
 		end, \
 		_ = [Compile(F) || F <- string:tokens("$(1)", " ")], \
 		init:stop()'