summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRené 'Necoro' Neumann <necoro@necoro.eu>2022-01-23 23:23:36 +0100
committerRené 'Necoro' Neumann <necoro@necoro.eu>2022-01-23 23:23:36 +0100
commite69d46383fd29378f5d1b3a39f92a2a67a85f1f8 (patch)
tree0a9881644e26318848da780ec8672d710698afba
parent6ed70dbc85a90328c09092f50fb52aeb982c3873 (diff)
downloadengarde-importer-e69d46383fd29378f5d1b3a39f92a2a67a85f1f8.tar.gz
engarde-importer-e69d46383fd29378f5d1b3a39f92a2a67a85f1f8.tar.bz2
engarde-importer-e69d46383fd29378f5d1b3a39f92a2a67a85f1f8.zip
Move enums to own file; add AgeGroup and Weapon enum
-rw-r--r--main.go43
-rw-r--r--types.go139
2 files changed, 139 insertions, 43 deletions
diff --git a/main.go b/main.go
index 7729ab7..395f244 100644
--- a/main.go
+++ b/main.go
@@ -15,49 +15,6 @@ type enguarde interface {
enguarde() (string, error)
}
-type Gender int
-
-const (
- GenderM = iota
- GenderF
-)
-
-func (g Gender) String() string {
- switch g {
- case GenderM:
- return "M"
- case GenderF:
- return "F"
- default:
- return fmt.Sprintf("U%d", g)
- }
-}
-
-func (g Gender) enguarde() (string, error) {
- switch g {
- case GenderM:
- return "masculin", nil
- case GenderF:
- return "feminin", nil
- default:
- return "", fmt.Errorf("unknown gender value '%d'", g)
- }
-}
-
-func (g *Gender) UnmarshalCSV(content []byte) error {
- c := string(content)
- switch c {
- case "M":
- *g = GenderM
- case "F":
- *g = GenderF
- default:
- return fmt.Errorf("unknown gender value '%s'", c)
- }
-
- return nil
-}
-
type participant struct {
LastName string `csv:"lastname"`
FirstName string `csv:"firstname"`
diff --git a/types.go b/types.go
new file mode 100644
index 0000000..82fd8e6
--- /dev/null
+++ b/types.go
@@ -0,0 +1,139 @@
+package main
+
+import "fmt"
+
+type Gender int
+
+const (
+ GenderM Gender = iota
+ GenderF
+)
+
+func (g Gender) String() string {
+ switch g {
+ case GenderM:
+ return "M"
+ case GenderF:
+ return "F"
+ default:
+ return fmt.Sprintf("U%d", g)
+ }
+}
+
+func (g Gender) enguarde() (string, error) {
+ switch g {
+ case GenderM:
+ return "masculin", nil
+ case GenderF:
+ return "feminin", nil
+ default:
+ return "", fmt.Errorf("unknown gender value '%d'", g)
+ }
+}
+
+func GenderFromString(content string) (Gender, error) {
+ switch content {
+ case "M":
+ return GenderM, nil
+ case "F":
+ return GenderF, nil
+ default:
+ return 0, fmt.Errorf("unknown gender value '%s'", content)
+ }
+}
+
+func (g *Gender) UnmarshalCSV(content []byte) error {
+ if res, err := GenderFromString(string(content)); err == nil {
+ *g = res
+ return nil
+ } else {
+ return err
+ }
+}
+
+type AgeGroup int
+
+const (
+ AgeVeteran AgeGroup = iota
+ AgeSenior
+)
+
+func (a AgeGroup) String() string {
+ switch a {
+ case AgeVeteran:
+ return "V"
+ case AgeSenior:
+ return "S"
+ default:
+ return fmt.Sprintf("U%d", a)
+ }
+}
+
+func (a AgeGroup) enguarde() (string, error) {
+ switch a {
+ case AgeVeteran:
+ return "veteran", nil
+ case AgeSenior:
+ return "senior", nil
+ default:
+ return "", fmt.Errorf("unknown age group value '%d'", a)
+ }
+}
+
+func AgeGroupFromString(content string) (AgeGroup, error) {
+ switch content {
+ case "V":
+ return AgeVeteran, nil
+ case "S":
+ return AgeSenior, nil
+ default:
+ return 0, fmt.Errorf("unknown age group value '%s'", content)
+ }
+}
+
+type Weapon int
+
+const (
+ Epee Weapon = iota
+ Foil
+ Sabre
+)
+
+func (w Weapon) String() string {
+ switch w {
+ case Epee:
+ return "D"
+ case Foil:
+ return "F"
+ case Sabre:
+ return "S"
+ default:
+ return fmt.Sprintf("U%d", w)
+ }
+}
+
+func (w Weapon) enguarde() (string, error) {
+ switch w {
+ case Epee:
+ return "epee", nil
+ case Foil:
+ return "fleuret", nil
+ case Sabre:
+ return "sabre", nil
+ default:
+ return "", fmt.Errorf("unknown weapon value '%d'", w)
+ }
+}
+
+func WeaponFromString(content string) (Weapon, error) {
+ switch content {
+ case "D":
+ return Epee, nil
+ case "S":
+ return Sabre, nil
+ case "F":
+ return Foil, nil
+ default:
+ return 0, fmt.Errorf("unknown weapon value '%s'", content)
+ }
+}