-
Notifications
You must be signed in to change notification settings - Fork 0
/
achievement.go
64 lines (57 loc) · 1.66 KB
/
achievement.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
package parkrunparser
import "fmt"
type Achievement int
const (
AchievementNone Achievement = iota
AchievementFirst
AchievementPB
)
func ParseAchievement(s string) (Achievement, error) {
if s == "" {
return AchievementNone, nil
}
var first = [...]string{
"First Timer!", // UK, SA, CA, US, NZ, IE, MY, AUS
"Erstläufer!", // Germany
"Erstteilnahme!", // Germany
"Première perf' !", // France
"Première perf' !", // France
"Prima volta!", // Italy
"Debut!", // Sweden
"Debiutant", // Poland
"Nieuwe loper!", // Netherlands
"Første gang!", // Denmark
"初参加!", // Japan
"Ensikertalainen!", // Finland
}
var pb = [...]string{
"New PB!", // UK, SA, CA, US, NZ, IE, MY, AUS
"Neue PB!", // Germany
"Meilleure perf' !", // France
"Meilleure perf' !", // France
"Nuovo PB!", // Italy
"Nytt PB!", // Sweden
"Nowy PB!", // Poland
"Nieuw PR!", // Netherlands
"Ny PB!", // Denmark
"自己ベスト!", // Japan
"Oma ennätys!", // Finland
}
for _, pattern := range first {
if pattern == s {
return AchievementFirst, nil
}
if fmt.Sprintf("[parkrun_translate phrase='%s']", pattern) == s {
return AchievementFirst, nil
}
}
for _, pattern := range pb {
if pattern == s {
return AchievementPB, nil
}
if fmt.Sprintf("[parkrun_translate phrase='%s']", pattern) == s {
return AchievementPB, nil
}
}
return AchievementNone, fmt.Errorf("cannot parse achievement: %s", s)
}