Browse Source

Parse single hour specs

Lucas Stadler 9 years ago
parent
commit
93a258aeb3
2 changed files with 18 additions and 3 deletions
  1. 16 2
      go/remind/remind.go
  2. 2 1
      go/remind/remind_test.go

+ 16 - 2
go/remind/remind.go

@ -84,8 +84,6 @@ func parseTimeRelative(s string, now time.Time) (time.Time, error) {
84 84
			t = modifier(1, now)
85 85
			more = 2
86 86
		}
87
	default:
88
		return t, fmt.Errorf("unknown date spec '%s'", s)
89 87
	}
90 88
91 89
	if len(parts) == more {
@ -109,6 +107,22 @@ func parseTimeRelative(s string, now time.Time) (time.Time, error) {
109 107
		return t.Add(h), nil
110 108
	}
111 109
110
	l := len(parts)
111
	if (l == 1 || l == 2) && (strings.HasSuffix(parts[l-1], "am") || strings.HasSuffix(parts[l-1], "pm")) {
112
		s = parts[0]
113
		if l == 2 {
114
			s += parts[1]
115
		}
116
117
		h, err := parseHours(s)
118
		if err != nil {
119
			return t, err
120
		}
121
122
		t = truncateHours(now)
123
		return t.Add(h), nil
124
	}
125
112 126
	return t, fmt.Errorf("unknown date spec '%s' (unexpected)", s)
113 127
}
114 128

+ 2 - 1
go/remind/remind_test.go

@ -23,7 +23,8 @@ func TestParse(t *testing.T) {
23 23
		{"in two weeks", now.AddDate(0, 0, 2*7)},
24 24
		{"in 3 weeks", now.AddDate(0, 0, 3*7)},
25 25
		//"2016-09-28",
26
		//"3pm",
26
		{"3pm", truncateHours(now).Add(15 * time.Hour)},
27
		{"3 pm", truncateHours(now).Add(15 * time.Hour)},
27 28
		{"in 4 days at 10 pm", truncateHours(now).AddDate(0, 0, 4).Add(22 * time.Hour)},
28 29
	}
29 30