{"id":28397838,"url":"https://github.com/analytech-solutions/todo.jl","last_synced_at":"2025-06-28T12:31:41.717Z","repository":{"id":61799961,"uuid":"186396325","full_name":"analytech-solutions/Todo.jl","owner":"analytech-solutions","description":"Todo task management and tracking in Julia","archived":false,"fork":false,"pushed_at":"2020-02-21T11:21:29.000Z","size":12,"stargazers_count":9,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-06-01T11:44:46.983Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Julia","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/analytech-solutions.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-05-13T10:16:56.000Z","updated_at":"2023-08-18T05:07:48.000Z","dependencies_parsed_at":"2022-10-21T11:45:13.551Z","dependency_job_id":null,"html_url":"https://github.com/analytech-solutions/Todo.jl","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/analytech-solutions/Todo.jl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analytech-solutions%2FTodo.jl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analytech-solutions%2FTodo.jl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analytech-solutions%2FTodo.jl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analytech-solutions%2FTodo.jl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/analytech-solutions","download_url":"https://codeload.github.com/analytech-solutions/Todo.jl/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/analytech-solutions%2FTodo.jl/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262431115,"owners_count":23309976,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-06-01T02:37:04.309Z","updated_at":"2025-06-28T12:31:41.707Z","avatar_url":"https://github.com/analytech-solutions.png","language":"Julia","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Todo.jl\n\nTodo task management and tracking in Julia using the [todo.txt format](https://github.com/todotxt/todo.txt).\n\n# Usage\n\nThis package introduces a framework for placing \"todo\" text within Julia code.\nYou can do so by using the `@todo_str` string macro literally anywhere you wish.\nThe text content of the todo should be what is defined in the [todo.txt format](https://github.com/todotxt/todo.txt).\n\nDefined in a file and `include(...)`-ed in the REPL:\n```jl\nmodule ExampleUsage\nusing Todo\n\ntodo\"implement some functionality\"      # a simple todo\ntodo\"2019-05-13 add tests\"              # with a creation date\ntodo\"(A) 2019-05-13 add documentation\"  # with the highest priority and a creation date\ntodo\"(Z) notify some friends\"           # with the lowest priority\ntodo\"x (A) 2019-05-14 2019-05-13 \"      # with the lowest priority\ntodo\"include a tag:value any:where\"     # with tags \"tag\" =\u003e \"value\" and \"any\" =\u003e \"where\"\ntodo\"and projects +Project1 +Project2\"  # with projects \"Project1\" and \"Project2\"\ntodo\"and contexts @here @there\"         # with contexts \"here\" and \"there\"\n\niscornercase(i) = (todo\"add checks for corner cases\" ; false)\n\nfunction f()\n\ttodo\"support another use-case\"\n\t\n\tfor i in 1:10\n\t\tiscornercase(i) \u0026\u0026 todo\"handle special corner case\"\n\tend\nend\n\nend\n```\n\nYou might be thinking, \"So what? That's no different than using a comment!\"\nWell, this is where the additional functionality of Todo.jl comes in handy.\nWhen running from the REPL (or when `isinteractive() == true`) Todo.jl keeps track of the number of times each todo task is hit.\nThis information can help you prioritize your package's todos based on how often the todo is encountered under your desired workload.\n\n```jl\njulia\u003e using Todo\n\njulia\u003e ExampleUsage.f()\n\njulia\u003e todo_hits()\nDict{TodoTask,Int64} with 10 entries:\n  TodoTask(...) =\u003e 1\n  TodoTask(...) =\u003e 1\n  TodoTask(...) =\u003e 10\n  ...\n  TodoTask(...) =\u003e 1\n\njulia\u003e reset_hits()\n\njulia\u003e ExampleUsage.f()\n\njulia\u003e todo_hits()\nDict{TodoTask,Int64} with 2 entries:\n  TodoTask(...) =\u003e 10\n  TodoTask(...) =\u003e 1\n```\n\nWhen not running from the REPL (`isinteractive() == false`), the package does not keep track of the hit counts for each todo task.\nThis behavior allows for the complete removal of any runtime impact that the todo tracking might incur.\nThe package can be manually forced to track or not track todos by defining `@eval Main TRACK_TODOS = true|false` before the package is first imported.\n\nTodo.jl includes the ability to load and save a .txt file according to the todo.txt format.\nIt can also save a markdown file which could be used for the TODO section of your package!\n\n```jl\njulia\u003e save_todos(\"todo.txt\", todos())\n\njulia\u003e tasks = load_todos(\"todo.txt\")\n11-element Array{TodoTask,1}:\n  TodoTask(...)\n  TodoTask(...)\n  ...\n  TodoTask(...)\n\njulia\u003e save_todos(\"todo.md\", tasks, format = :markdown)\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanalytech-solutions%2Ftodo.jl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanalytech-solutions%2Ftodo.jl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanalytech-solutions%2Ftodo.jl/lists"}