pttodo/pttodo/root.go

39 lines
907 B
Go

package pttodo
type Root struct {
Todo []Todo
Scheduled []Todo
Done []Todo
}
func (root *Root) MoveScheduledToTodo() {
for i := len(root.Scheduled) - 1; i >= 0; i-- {
if root.Scheduled[i].Triggered() {
root.Todo = append(root.Todo, root.Scheduled[i])
root.Scheduled[i] = root.Scheduled[len(root.Scheduled)-1]
root.Scheduled = root.Scheduled[:len(root.Scheduled)-1]
if i < len(root.Scheduled)-1 {
i += 1
}
}
}
}
func (root *Root) MergeIn(root2 Root) {
for _, listPair := range [][2]*[]Todo{
[2]*[]Todo{&root.Todo, &root2.Todo},
[2]*[]Todo{&root.Scheduled, &root2.Scheduled},
[2]*[]Todo{&root.Done, &root2.Done},
} {
for _, candidate := range *listPair[1] {
found := false
for i := range *listPair[0] {
found = found || ((*listPair[0])[i].Todo == candidate.Todo)
}
if !found {
*listPair[0] = append(*listPair[0], candidate)
}
}
}
}