Browse Source

* If variable is a function with 0 args, evaluate it.

Thanks to rumata-e...@nm.ru.



git-svn-id: http://erlydtl.googlecode.com/svn/trunk@151 a5195066-8e3e-0410-a82a-05b01b1b9875
emmiller 16 years ago
parent
commit
5803797c5d
2 changed files with 6 additions and 0 deletions
  1. 2 0
      src/erlydtl/erlydtl_filters.erl
  2. 4 0
      src/tests/erlydtl_unittests.erl

+ 2 - 0
src/erlydtl/erlydtl_filters.erl

@@ -116,6 +116,8 @@ format_number(Input) when is_integer(Input) ->
     integer_to_list(Input);
     integer_to_list(Input);
 format_number(Input) when is_float(Input) ->
 format_number(Input) when is_float(Input) ->
     io_lib:format("~p", [Input]);
     io_lib:format("~p", [Input]);
+format_number(Input) when is_function(Input, 0) ->
+    format_number(Input());
 format_number(Input) ->
 format_number(Input) ->
     Input.
     Input.
 
 

+ 4 - 0
src/tests/erlydtl_unittests.erl

@@ -254,6 +254,10 @@ tests() ->
                     <<"{{ var1|format_number }}">>, [{var1, "28.77"}], <<"28.77">>},
                     <<"{{ var1|format_number }}">>, [{var1, "28.77"}], <<"28.77">>},
                 {"|format_number 4",
                 {"|format_number 4",
                     <<"{{ var1|format_number }}">>, [{var1, "23.77"}], <<"23.77">>},
                     <<"{{ var1|format_number }}">>, [{var1, "23.77"}], <<"23.77">>},
+                {"|format_number 5",
+                    <<"{{ var1|format_number }}">>, [{var1, fun() -> 29 end}], <<"29">>},
+                {"|format_number 6",
+                    <<"{{ var1|format_number }}">>, [{var1, fun() -> fun() -> 31 end end}], <<"31">>},
  
  
                 {"|join:\", \"",
                 {"|join:\", \"",
                     <<"{{ var1|join:\", \" }}">>, [{var1, ["Liberte", "Egalite", "Fraternite"]}],
                     <<"{{ var1|join:\", \" }}">>, [{var1, ["Liberte", "Egalite", "Fraternite"]}],