ソースを参照

Parse single hour specs

Lucas Stadler 9 年 前
コミット
93a258aeb3
共有2 個のファイルを変更した18 個の追加3 個の削除を含む
  1. 16 2
      go/remind/remind.go
  2. 2 1
      go/remind/remind_test.go

+ 16 - 2
go/remind/remind.go

84
			t = modifier(1, now)
84
			t = modifier(1, now)
85
			more = 2
85
			more = 2
86
		}
86
		}
87
	default:
88
		return t, fmt.Errorf("unknown date spec '%s'", s)
89
	}
87
	}
90
88
91
	if len(parts) == more {
89
	if len(parts) == more {
109
		return t.Add(h), nil
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
	return t, fmt.Errorf("unknown date spec '%s' (unexpected)", s)
126
	return t, fmt.Errorf("unknown date spec '%s' (unexpected)", s)
113
}
127
}
114
128

+ 2 - 1
go/remind/remind_test.go

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