blob: 22700c82bb879f9eaeea97554902d1410042cf66 (
plain)
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
|
package exercises
import (
"os"
"regexp"
)
var notDoneRegex = regexp.MustCompile(`(?m)^\s*///?\s*I\s+AM\s+NOT\s+DONE`)
type Exercise struct {
Name string
Path string
Mode string
Hint string
}
func (e Exercise) State() State {
data, err := os.ReadFile(e.Path)
if err != nil {
return Pending
}
if notDoneRegex.Match(data) {
return Pending
}
return Done
}
type State int
const (
Pending State = iota + 1
Done
)
func (s State) String() string {
return [...]string{"Pending", "Done"}[s-1]
}
|