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

Fix result value of compile_dir templates

Relates to comment in #124.

This is a backwards breaking change (again, sorry, but it just wasn't
right as it was).

The compiled dir template now returns `{ok, Rendered}` or `{error,
Reason}` just as normally compiled templates.
Andreas Stenius 11 лет назад
Родитель
Сommit
0b61b69591
1 измененных файлов с 8 добавлено и 9 удалено
  1. 8 9
      src/erlydtl_beam_compiler.erl

+ 8 - 9
src/erlydtl_beam_compiler.erl

@@ -146,15 +146,14 @@ compile_multiple_to_binary(Dir, ParserResults, Context0) ->
                                                                {FilePath, CheckSum},
                                                                body_ast(DjangoParseTree, Ctx, TreeWalker)),
                         FunctionName = filename:rootname(filename:basename(File)),
-                        Function1 = ?Q("_@FunctionName@(_Variables) -> _@FunctionName@(_Variables, [])"),
-                        Function2 = erl_syntax:function(
-                                      erl_syntax:atom(FunctionName),
-                                      [erl_syntax:clause(
-                                         [erl_syntax:variable("_Variables"),
-                                          erl_syntax:variable("RenderOptions")],
-                                         none,
-                                         MatchAst ++ stringify(BodyAst, Ctx))
-                                      ]),
+                        Function1 = ?Q("_@FunctionName@(Variables) -> _@FunctionName@(Variables, [])"),
+                        Function2 = ?Q(["_@FunctionName@(Variables, RenderOptions) ->",
+                                        "  try _@MatchAst, _@body of",
+                                        "    Val -> {ok, Val}",
+                                        "  catch",
+                                        "    Err -> {error, Err}",
+                                        "end"],
+                                       [{body, stringify(BodyAst, Ctx)}]),
                         {{FunctionName, Function1, Function2}, {merge_info(AstInfo, BodyInfo), TreeWalker1, Ctx}}
                     catch
                         throw:Error ->