/todo_list.erl

https://github.com/martinjlogan/ErlangBootstrap · Erlang · 35 lines · 13 code · 5 blank · 17 comment · 0 complexity · 4a26d1cd030b768549c1982d463ed586 MD5 · raw file

  1. %%%-------------------------------------------------------------------
  2. %%% @author Martin Logan <martinjlogan@Macintosh-2.local>
  3. %%% @copyright (C) 2011, Martin Logan
  4. %%% @doc
  5. %%%
  6. %%% @end
  7. %%% Created : 11 Sep 2011 by Martin Logan <martinjlogan@Macintosh-2.local>
  8. %%%-------------------------------------------------------------------
  9. -module(todo_list).
  10. %% API
  11. -export([write_todo/1, read_todo/0]).
  12. %%%===================================================================
  13. %%% API
  14. %%%===================================================================
  15. %% @doc write out a todo list
  16. -type todo_list() :: [{non_neg_integer(), term()}].
  17. -spec write_todo(todo_list()) -> ok.
  18. write_todo(ToDo) ->
  19. file:write_file("todo.bin", term_to_binary(sort_todo(ToDo))).
  20. %% @doc read back out a todo list
  21. -spec read_todo() -> list().
  22. read_todo() ->
  23. {ok, Bin} = file:read_file("todo.bin"),
  24. binary_to_term(Bin).
  25. %%%===================================================================
  26. %%% Internal functions
  27. %%%===================================================================
  28. sort_todo(ToDo) ->
  29. lists:sort(fun({P1, N1}, {P1, N2}) -> N1 < N2 end,
  30. ToDo).