/modules/mod_base/filters/filter_random.erl

https://code.google.com/p/zotonic/ · Erlang · 31 lines · 11 code · 4 blank · 16 comment · 0 complexity · b2682ead7e4ae8c1c9272325db550808 MD5 · raw file

  1. %% @author Marc Worrell <marc@worrell.nl>
  2. %% @copyright 2010 Marc Worrell
  3. %% @doc 'random' filter, return a random element of a list
  4. %% Copyright 2010 Marc Worrell
  5. %%
  6. %% Licensed under the Apache License, Version 2.0 (the "License");
  7. %% you may not use this file except in compliance with the License.
  8. %% You may obtain a copy of the License at
  9. %%
  10. %% http://www.apache.org/licenses/LICENSE-2.0
  11. %%
  12. %% Unless required by applicable law or agreed to in writing, software
  13. %% distributed under the License is distributed on an "AS IS" BASIS,
  14. %% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15. %% See the License for the specific language governing permissions and
  16. %% limitations under the License.
  17. -module(filter_random).
  18. -export([random/2]).
  19. random([], _Context) ->
  20. undefined;
  21. random(undefined, _Context) ->
  22. undefined;
  23. random(In, Context) when is_list(In) ->
  24. M = filter_rand:rand(length(In), Context),
  25. hd(lists:nthtail(M-1, In));
  26. random(In, Context) ->
  27. random(erlydtl_runtime:to_list(In, Context), Context).