diff options
Diffstat (limited to 'src/exercises/exercise.go')
-rw-r--r-- | src/exercises/exercise.go | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/src/exercises/exercise.go b/src/exercises/exercise.go index 2783381..22700c8 100644 --- a/src/exercises/exercise.go +++ b/src/exercises/exercise.go @@ -1,11 +1,29 @@ 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 - State State + 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 |