erlydtl_contrib_humanize.erl 536 B

123456789101112131415161718
  1. -module(erlydtl_contrib_humanize).
  2. -export([intcomma/1]).
  3. intcomma(Value) when is_integer(Value) ->
  4. intcomma(integer_to_list(Value));
  5. intcomma(Value) ->
  6. ValueBin = iolist_to_binary(Value),
  7. intcomma(ValueBin, size(ValueBin) rem 3, <<>>).
  8. intcomma(<<>>, _, Acc) ->
  9. Acc;
  10. intcomma(<< C, Rest/bits >>, 0, <<>>) ->
  11. intcomma(Rest, 2, << C >>);
  12. intcomma(<< C, Rest/bits >>, 0, Acc) ->
  13. intcomma(Rest, 2, << Acc/binary, $,, C >>);
  14. intcomma(<< C, Rest/bits >>, N, Acc) ->
  15. intcomma(Rest, N - 1, << Acc/binary, C >>).