81 lines
1.2 KiB
Go
81 lines
1.2 KiB
Go
|
package main
|
||
|
|
||
|
import (
|
||
|
"encoding/json"
|
||
|
)
|
||
|
|
||
|
type TDL struct {
|
||
|
Lifts []Lift
|
||
|
Plates []Plate
|
||
|
SetTemplates []SetTemplate
|
||
|
TrainingDays []TrainingDay
|
||
|
}
|
||
|
|
||
|
func (t TDL) JSON() []byte {
|
||
|
tmp, err := json.MarshalIndent(t, "", " ")
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return tmp
|
||
|
}
|
||
|
|
||
|
func (t TDL) Clone() TDL {
|
||
|
t2 := TDL{}
|
||
|
// an actual deep copy might be a little faster
|
||
|
// - but this one is good enough.
|
||
|
err := json.Unmarshal(t.JSON(), &t2)
|
||
|
if err != nil {
|
||
|
panic(err)
|
||
|
}
|
||
|
return t2
|
||
|
}
|
||
|
|
||
|
type Lift struct {
|
||
|
Name string
|
||
|
Max float64
|
||
|
Increment float64
|
||
|
IncrementPercent bool
|
||
|
Bar float64
|
||
|
}
|
||
|
|
||
|
type Plate struct {
|
||
|
Weight float64
|
||
|
Amount int
|
||
|
}
|
||
|
|
||
|
type SetTemplate struct {
|
||
|
Name string
|
||
|
Items []SetTemplateItem
|
||
|
}
|
||
|
|
||
|
type SetTemplateItem struct {
|
||
|
Set Set
|
||
|
ReferenceName string
|
||
|
Amount int
|
||
|
}
|
||
|
|
||
|
type Set struct {
|
||
|
Reps int
|
||
|
Percentage float64
|
||
|
PlusWeight float64
|
||
|
Amount int
|
||
|
Notice string
|
||
|
}
|
||
|
|
||
|
type TrainingDay struct {
|
||
|
Items []TrainingDayItem
|
||
|
}
|
||
|
|
||
|
type TrainingDayItem struct {
|
||
|
LiftSchedule LiftSchedule
|
||
|
Raw string
|
||
|
}
|
||
|
|
||
|
type LiftSchedule struct {
|
||
|
LiftName string
|
||
|
Items []SetTemplateItem
|
||
|
Increase bool
|
||
|
IncreaseAmount float64
|
||
|
IncreasePercent bool
|
||
|
}
|