Todo (TodoTxt v0.1.0) View Source

Struct and functions for operating on ToDos

Link to this section Summary

Functions

parse parses a raw todo string into a Todo struct

converts a Todo struct into a string that would be found in a todo.txt file.

Link to this section Functions

parse parses a raw todo string into a Todo struct

Examples

iex> Todo.parse("x done")
%Todo{description: "done", done: true}

iex> Todo.parse("x 2020-09-13 done")
%Todo{description: "done", done: true, completion_date: ~D[2020-09-13]}

iex> Todo.parse("(A) top priority")
%Todo{description: "top priority", priority: :A }

iex> Todo.parse("todo with @Context1 and @Context_2")
%Todo{description: "todo with @Context1 and @Context_2", contexts: [:Context1, :Context_2]}

iex> Todo.parse("todo with +Project_1 and +project2")
%Todo{description: "todo with +Project_1 and +project2", projects: [:Project_1, :project2]}

iex> Todo.parse("todo 2020-10-15 with due:2021-09-13")
%Todo{description: "todo 2020-10-15 with", due_date: ~D[2021-09-13]}

iex> Todo.parse("2020-10-15 task due:2021-09-13")
%Todo{description: "task", creation_date: ~D[2020-10-15], due_date: ~D[2021-09-13]}

iex> Todo.parse("task meta:data meta1:data1")
%Todo{description: "task", additional_fields: %{"meta" => "data", "meta1" => "data1"}}

iex> Todo.parse("task due:2021-09-13 meta:data meta1:data1")
%Todo{description: "task", additional_fields: %{"meta" => "data", "meta1" => "data1"}, due_date: ~D[2021-09-13]}

converts a Todo struct into a string that would be found in a todo.txt file.

Examples

iex> Todo.to_string(%Todo{description: "done", done: true})
"x done"

iex> Todo.to_string(%Todo{description: "done on time", done: true, completion_date: ~D[2020-09-13]})
"x 2020-09-13 done on time"

iex> Todo.to_string(%Todo{description: "top priority", priority: :A })
"(A) top priority"

iex> Todo.to_string(%Todo{description: "context task: @context1", contexts: [:context1, :context2] })
"context task: @context1 @context2"

iex> Todo.to_string(%Todo{description: "project task: +project1", projects: [:project1, :project2] })
"project task: +project1 +project2"

iex> Todo.to_string(%Todo{description: "created on time", creation_date: ~D[2021-09-13]})
"2021-09-13 created on time"

iex> Todo.to_string(%Todo{description: "done on time", done: true, completion_date: ~D[2020-09-13], creation_date: ~D[2020-09-12]})
"x 2020-09-13 2020-09-12 done on time"

iex> Todo.to_string(%Todo{description: "due on time", due_date: ~D[2021-09-13]})
"due on time due:2021-09-13"

iex> Todo.to_string(%Todo{description: "additional fields task", additional_fields: %{"key1" => "value1", "key2" => "value2"}})
"additional fields task key1:value1 key2:value2"

iex> Todo.to_string(%Todo{description: "pomodoro task", pomodori: {1, 3}})
"pomodoro task (#pomo: 1/3)"