1package bug
 2
 3import (
 4	"fmt"
 5	"strings"
 6)
 7
 8type Status int
 9
10const (
11	_ Status = iota
12	OpenStatus
13	ClosedStatus
14)
15
16func (s Status) String() string {
17	switch s {
18	case OpenStatus:
19		return "open"
20	case ClosedStatus:
21		return "closed"
22	default:
23		return "unknown status"
24	}
25}
26
27func (s Status) Action() string {
28	switch s {
29	case OpenStatus:
30		return "opened"
31	case ClosedStatus:
32		return "closed"
33	default:
34		return "unknown status"
35	}
36}
37
38func StatusFromString(str string) (Status, error) {
39	cleaned := strings.ToLower(strings.TrimSpace(str))
40
41	switch cleaned {
42	case "open":
43		return OpenStatus, nil
44	case "closed":
45		return ClosedStatus, nil
46	default:
47		return 0, fmt.Errorf("unknown status")
48	}
49}
50
51func (s Status) Validate() error {
52	if s != OpenStatus && s != ClosedStatus {
53		return fmt.Errorf("invalid")
54	}
55
56	return nil
57}