Browse Source

Make "title" filter more Django-y

Evan Miller 12 years ago
parent
commit
f51468dd28
2 changed files with 5 additions and 1 deletions
  1. 2 1
      src/erlydtl_filters.erl
  2. 3 0
      tests/src/erlydtl_unittests.erl

+ 2 - 1
src/erlydtl_filters.erl

@@ -1029,7 +1029,8 @@ title([], Acc) ->
     lists:reverse(Acc);
     lists:reverse(Acc);
 title([Char | Rest], [] = Acc) when Char >= $a, Char =< $z ->
 title([Char | Rest], [] = Acc) when Char >= $a, Char =< $z ->
     title(Rest, [Char + ($A - $a) | Acc]);
     title(Rest, [Char + ($A - $a) | Acc]);
-title([Char | Rest], [$\  |_] = Acc) when Char >= $a, Char =< $z ->
+title([Char | Rest], [Sep|_] = Acc) when Char >= $a, Char =< $z, not (Sep >= $a andalso Sep =< $z),
+                                         not (Sep >= $A andalso Sep =< $Z) ->
     title(Rest, [Char + ($A - $a) | Acc]);
     title(Rest, [Char + ($A - $a) | Acc]);
 title([Char | Rest], Acc) ->
 title([Char | Rest], Acc) ->
     title(Rest, [Char | Acc]).
     title(Rest, [Char | Acc]).

+ 3 - 0
tests/src/erlydtl_unittests.erl

@@ -823,6 +823,9 @@ tests() ->
                 {"|title (pre-formatted)",
                 {"|title (pre-formatted)",
                     <<"{{ \"My Title Case\"|title }}">>, [],
                     <<"{{ \"My Title Case\"|title }}">>, [],
                     <<"My Title Case">>},
                     <<"My Title Case">>},
+                {"|title (wacky separators)",
+                    <<"{{ \"my-title!case\"|title }}">>, [],
+                    <<"My-Title!Case">>},
                 {"|truncatechars:0",
                 {"|truncatechars:0",
                     <<"{{ var1|truncatechars:0 }}">>, [{var1, "Empty Me"}],
                     <<"{{ var1|truncatechars:0 }}">>, [{var1, "Empty Me"}],
                     <<"">>},
                     <<"">>},