Created
January 14, 2012 07:58
-
-
Save kortschak/1610668 to your computer and use it in GitHub Desktop.
Patch for DevTodo2 weekly.2011-12-01
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
From f5cc658536f716b5686a8cd158ad556b77a023c9 Mon Sep 17 00:00:00 2001 | |
From: kortschak <[email protected]> | |
Date: Sat, 14 Jan 2012 18:00:49 +1030 | |
Subject: [PATCH] time changes - weekly.2011-12-01 | |
--- | |
consoleview.go | 9 ++++----- | |
jsonio.go | 18 +++++++++--------- | |
legacyio.go | 8 ++++---- | |
main.go | 4 +++- | |
todo.go | 24 ++++++++++++------------ | |
todo_test.go | 2 +- | |
view.go | 29 ++++++++++++++--------------- | |
7 files changed, 47 insertions(+), 47 deletions(-) | |
diff --git a/consoleview.go b/consoleview.go | |
index 3543a50..2f821b3 100644 | |
--- a/consoleview.go | |
+++ b/consoleview.go | |
@@ -75,12 +75,11 @@ func getTerminalWidth() int { | |
return int(ws.ws_col) | |
} | |
- | |
func taskState(task Task) int { | |
if task.Len() != 0 { | |
return '+' | |
} | |
- if task.CompletionTime() != nil { | |
+ if !task.CompletionTime().IsZero() { | |
return '-' | |
} | |
return ' ' | |
@@ -118,7 +117,7 @@ func formatTask(width, depth int, task Task, options *ViewOptions) { | |
trimmed := false | |
if options.Summarise { | |
if len(text) > width { | |
- text = strings.TrimSpace(text[:width - 1]) | |
+ text = strings.TrimSpace(text[:width-1]) | |
trimmed = true | |
} | |
} | |
@@ -131,7 +130,7 @@ func formatTask(width, depth int, task Task, options *ViewOptions) { | |
} | |
func consoleDisplayTask(width, depth int, task Task, options *ViewOptions) { | |
- if depth >= 0 && (!options.ShowAll && task.CompletionTime() != nil) { | |
+ if depth >= 0 && (!options.ShowAll && !task.CompletionTime().IsZero()) { | |
return | |
} | |
if depth >= 0 { | |
@@ -145,7 +144,7 @@ func consoleDisplayTask(width, depth int, task Task, options *ViewOptions) { | |
} | |
} | |
-type ConsoleView struct {} | |
+type ConsoleView struct{} | |
func NewConsoleView() *ConsoleView { | |
return &ConsoleView{} | |
diff --git a/jsonio.go b/jsonio.go | |
index aca690c..9604715 100644 | |
--- a/jsonio.go | |
+++ b/jsonio.go | |
@@ -76,18 +76,18 @@ func toMarshalableTask(n TaskNode) []*marshalableTask { | |
children := make([]*marshalableTask, n.Len()) | |
for i := 0; i < n.Len(); i++ { | |
t := n.At(i) | |
- var created, completed int64 = 0, 0 | |
- if t.CreationTime() != nil { | |
- created = t.CreationTime().Seconds() | |
+ var created, completed time.Time | |
+ if !t.CreationTime().IsZero() { | |
+ created = t.CreationTime() | |
} | |
- if t.CompletionTime() != nil { | |
- completed = t.CompletionTime().Seconds() | |
+ if !t.CompletionTime().IsZero() { | |
+ completed = t.CompletionTime() | |
} | |
children[i] = &marshalableTask{ | |
Text: t.Text(), | |
Priority: t.Priority().String(), | |
- Creation: created, | |
- Completion: completed, | |
+ Creation: created.Unix(), | |
+ Completion: completed.Unix(), | |
Tasks: toMarshalableTask(t), | |
} | |
} | |
@@ -104,9 +104,9 @@ func fromMarshalableTaskList(l *marshalableTaskList) TaskList { | |
func fromMarshalableTask(node TaskNode, t []*marshalableTask) { | |
for _, j := range t { | |
task := node.Create(j.Text, PriorityFromString(j.Priority)) | |
- task.SetCreationTime(time.SecondsToUTC(j.Creation)) | |
+ task.SetCreationTime(time.Unix(j.Creation, 0).UTC()) | |
if j.Completion != 0 { | |
- task.SetCompletionTime(time.SecondsToUTC(j.Completion)) | |
+ task.SetCompletionTime(time.Unix(j.Completion, 0).UTC()) | |
} | |
fromMarshalableTask(task, j.Tasks) | |
} | |
diff --git a/legacyio.go b/legacyio.go | |
index 264dbc3..dc182a9 100644 | |
--- a/legacyio.go | |
+++ b/legacyio.go | |
@@ -55,11 +55,11 @@ func parseXmlNote(parent TaskNode, from []xmlNote) { | |
task := parent.Create(text, priority) | |
- created, _ := strconv.Atoi64(note.Time) | |
- completed, _ := strconv.Atoi64(note.Done) | |
- task.SetCreationTime(time.SecondsToUTC(created)) | |
+ created, _ := strconv.ParseInt(note.Time, 10, 64) | |
+ completed, _ := strconv.ParseInt(note.Done, 10, 64) | |
+ task.SetCreationTime(time.Unix(created, 0).UTC()) | |
if completed != 0 { | |
- task.SetCompletionTime(time.SecondsToUTC(completed)) | |
+ task.SetCompletionTime(time.Unix(completed, 0).UTC()) | |
} | |
parseXmlNote(task, note.Note) | |
} | |
diff --git a/main.go b/main.go | |
index 44ea017..7691385 100644 | |
--- a/main.go | |
+++ b/main.go | |
@@ -22,6 +22,7 @@ import ( | |
"os" | |
"strconv" | |
"strings" | |
+ "time" | |
) | |
// Actions | |
@@ -34,6 +35,7 @@ var reparentFlag = goopt.Flag([]string{"-R", "--reparent"}, nil, "reparent task | |
var titleFlag = goopt.Flag([]string{"--title"}, nil, "set the task list title", "") | |
var versionFlag = goopt.Flag([]string{"--version"}, nil, "show version", "") | |
var infoFlag = goopt.Flag([]string{"-i", "--info"}, nil, "show information on a task", "") | |
+ | |
// Options | |
var priorityFlag = goopt.String([]string{"-p", "--priority"}, "medium", "priority of newly created tasks (veryhigh,high,medium,low,verylow)") | |
var graftFlag = goopt.String([]string{"-g", "--graft"}, "root", "task to graft new tasks to") | |
@@ -79,7 +81,7 @@ func doMarkDone(tasks TaskList, references []Task) { | |
func doMarkNotDone(tasks TaskList, references []Task) { | |
for _, task := range references { | |
- task.SetCompletionTime(nil) | |
+ task.SetCompletionTime(time.Time{}) | |
} | |
saveTaskList(tasks) | |
} | |
diff --git a/todo.go b/todo.go | |
index 073881d..a4d897d 100644 | |
--- a/todo.go | |
+++ b/todo.go | |
@@ -72,12 +72,12 @@ type Task interface { | |
Priority() Priority | |
SetPriority(priority Priority) | |
- SetCreationTime(time *time.Time) | |
- CreationTime() *time.Time | |
+ SetCreationTime(time time.Time) | |
+ CreationTime() time.Time | |
SetCompleted() | |
- SetCompletionTime(time *time.Time) | |
- CompletionTime() *time.Time | |
+ SetCompletionTime(time time.Time) | |
+ CompletionTime() time.Time | |
} | |
type TaskList interface { | |
@@ -233,7 +233,7 @@ type taskImpl struct { | |
*taskNodeImpl | |
text string | |
priority Priority | |
- created, completed *time.Time | |
+ created, completed time.Time | |
} | |
func newTask(id int, text string, priority Priority) Task { | |
@@ -241,8 +241,8 @@ func newTask(id int, text string, priority Priority) Task { | |
taskNodeImpl: newTaskNode(id), | |
text: text, | |
priority: priority, | |
- created: time.UTC(), | |
- completed: nil, | |
+ created: time.Now().UTC(), | |
+ completed: time.Time{}, | |
} | |
} | |
@@ -250,23 +250,23 @@ func (self *taskImpl) Id() int { | |
return self.id | |
} | |
-func (self *taskImpl) SetCreationTime(time *time.Time) { | |
+func (self *taskImpl) SetCreationTime(time time.Time) { | |
self.created = time | |
} | |
-func (self *taskImpl) CreationTime() *time.Time { | |
+func (self *taskImpl) CreationTime() time.Time { | |
return self.created | |
} | |
func (self *taskImpl) SetCompleted() { | |
- self.SetCompletionTime(time.UTC()) | |
+ self.SetCompletionTime(time.Now().UTC()) | |
} | |
-func (self *taskImpl) SetCompletionTime(time *time.Time) { | |
+func (self *taskImpl) SetCompletionTime(time time.Time) { | |
self.completed = time | |
} | |
-func (self *taskImpl) CompletionTime() *time.Time { | |
+func (self *taskImpl) CompletionTime() time.Time { | |
return self.completed | |
} | |
diff --git a/todo_test.go b/todo_test.go | |
index d4c8052..d4979fc 100644 | |
--- a/todo_test.go | |
+++ b/todo_test.go | |
@@ -26,7 +26,7 @@ func TestFind(t *testing.T) { | |
b := tasks.Create("do B", MEDIUM) | |
b.Create("do C", MEDIUM) | |
b.Create("do D", MEDIUM) | |
- | |
+ | |
task := tasks.Find("2.2") | |
if task == nil || task.Text() != "do D" { | |
t.Fail() | |
diff --git a/view.go b/view.go | |
index a181357..72a03fc 100644 | |
--- a/view.go | |
+++ b/view.go | |
@@ -18,13 +18,14 @@ package main | |
import ( | |
"sort" | |
+ "time" | |
) | |
type ViewOptions struct { | |
- Order Order | |
- Reversed bool | |
+ Order Order | |
+ Reversed bool | |
Summarise bool | |
- ShowAll bool | |
+ ShowAll bool | |
} | |
type View interface { | |
@@ -34,13 +35,13 @@ type View interface { | |
// A filtered, ordered view of a Tasks children. | |
type TaskView struct { | |
- tasks []Task | |
+ tasks []Task | |
options *ViewOptions | |
} | |
func CreateTaskView(node TaskNode, options *ViewOptions) *TaskView { | |
view := &TaskView{ | |
- tasks: make([]Task, node.Len()), | |
+ tasks: make([]Task, node.Len()), | |
options: options, | |
} | |
for i := 0; i < node.Len(); i++ { | |
@@ -64,30 +65,30 @@ func (self *TaskView) Less(i, j int) bool { | |
less := false | |
switch self.options.Order { | |
case CREATED: | |
- less = left.CreationTime().Seconds() < right.CreationTime().Seconds() | |
+ less = left.CreationTime().Before(right.CreationTime()) | |
case COMPLETED: | |
- less = left.CompletionTime().Seconds() < right.CompletionTime().Seconds() | |
+ less = left.CompletionTime().Before(right.CompletionTime()) | |
case TEXT: | |
less = left.Text() < right.Text() | |
case PRIORITY: | |
less = left.Priority() < right.Priority() | |
case DURATION: | |
- var leftDuration, rightDuration int64 | |
+ var leftDuration, rightDuration time.Duration | |
leftCompletion := left.CompletionTime() | |
rightCompletion := right.CompletionTime() | |
- if leftCompletion != nil { | |
- leftDuration = leftCompletion.Seconds() - left.CreationTime().Seconds() | |
+ if !leftCompletion.IsZero() { | |
+ leftDuration = leftCompletion.Sub(left.CreationTime()) | |
} else { | |
leftDuration = 0 | |
} | |
- if rightCompletion != nil { | |
- rightDuration = rightCompletion.Seconds() - right.CreationTime().Seconds() | |
+ if !rightCompletion.IsZero() { | |
+ rightDuration = rightCompletion.Sub(right.CreationTime()) | |
} else { | |
rightDuration = 0 | |
} | |
less = leftDuration < rightDuration | |
case DONE: | |
- less = left.CompletionTime() != nil && right.CompletionTime() == nil | |
+ less = !left.CompletionTime().IsZero() && right.CompletionTime().IsZero() | |
default: | |
panic("invalid ordering") | |
} | |
@@ -100,5 +101,3 @@ func (self *TaskView) Less(i, j int) bool { | |
func (self *TaskView) Swap(i, j int) { | |
self.tasks[j], self.tasks[i] = self.tasks[i], self.tasks[j] | |
} | |
- | |
- | |
-- | |
1.7.0.4 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment