forked from rickb777/period
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdesignator.go
110 lines (103 loc) · 1.7 KB
/
designator.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// Copyright 2015 Rick Beton. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package period
import (
"fmt"
"strconv"
)
// Designator enumerates the seven fields in a Period.
type Designator int8
const (
_ Designator = iota
Second
Minute
Hour
Day
Week
Month
Year
)
func asDesignator(d byte, isHMS bool) (Designator, error) {
switch d {
case 'S':
return Second, nil
case 'H':
return Hour, nil
case 'D':
return Day, nil
case 'W':
return Week, nil
case 'Y':
return Year, nil
case 'M':
if isHMS {
return Minute, nil
}
return Month, nil
}
return 0, fmt.Errorf("expected a designator Y, M, W, D, H, or S not '%c'", d)
}
func (d Designator) Byte() byte {
switch d {
case Second:
return 'S'
case Minute:
return 'M'
case Hour:
return 'H'
case Day:
return 'D'
case Week:
return 'W'
case Month:
return 'M'
case Year:
return 'Y'
}
panic(strconv.Itoa(int(d)))
}
//func (d designator) field() string {
// switch d {
// case second:
// return "seconds"
// case minute:
// return "minutes"
// case hour:
// return "hours"
// case Day:
// return "days"
// case week:
// return "weeks"
// case month:
// return "months"
// case year:
// return "years"
// }
// panic(strconv.Itoa(int(d)))
//}
//
//func (d designator) min(other designator) designator {
// if d < other {
// return d
// }
// return other
//}
//
//func (d designator) IsOneOf(xx ...designator) bool {
// for _, x := range xx {
// if x == d {
// return true
// }
// }
// return false
//}
//
//func (d designator) IsNotOneOf(xx ...designator) bool {
// for _, x := range xx {
// if x == d {
// return false
// }
// }
// return true
//}