Add some more functionality
This commit is contained in:
parent
e7b9ad2c29
commit
30978b9c94
19
task.go
19
task.go
@ -48,6 +48,7 @@ type Task struct {
|
||||
// Contexts, Projects, Tags
|
||||
//
|
||||
// For example:
|
||||
//
|
||||
// "(A) 2013-07-23 Call Dad @Home @Phone +Family due:2013-07-31 customTag1:Important!"
|
||||
func (task Task) String() string {
|
||||
var text string
|
||||
@ -270,3 +271,21 @@ func (task *Task) Due() time.Duration {
|
||||
}
|
||||
return task.DueDate.Sub(time.Now())
|
||||
}
|
||||
|
||||
func (task *Task) HasContext(ctx string) bool {
|
||||
for _, c := range task.Contexts {
|
||||
if c == ctx {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func (task *Task) HasProject(proj string) bool {
|
||||
for _, p := range task.Projects {
|
||||
if p == proj {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
13
todotxt.go
13
todotxt.go
@ -183,6 +183,19 @@ func (tasklist *TaskList) WriteToFilename(filename string) error {
|
||||
return ioutil.WriteFile(filename, []byte(tasklist.String()), 0640)
|
||||
}
|
||||
|
||||
func (tasklist *TaskList) ArchiveTaskToFile(task Task, filename string) error {
|
||||
if err := tasklist.RemoveTask(task); err != nil {
|
||||
return err
|
||||
}
|
||||
f, err := os.OpenFile(filename, os.O_APPEND|os.O_WRONLY, 0600)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
_, err = f.WriteString(task.String() + "\n")
|
||||
return err
|
||||
}
|
||||
|
||||
// LoadFromFile loads and returns a TaskList from *os.File.
|
||||
//
|
||||
// Using *os.File instead of a filename allows to also use os.Stdin.
|
||||
|
Loading…
Reference in New Issue
Block a user