feat: Initial changes to handline generating a timeline

This commit is contained in:
Ethan Holz
2022-10-13 17:02:55 -05:00
parent 88ce350a61
commit 9698d90308

View File

@@ -1,6 +1,7 @@
package msp package msp
import ( import (
"fmt"
"sort" "sort"
"time" "time"
) )
@@ -58,3 +59,26 @@ func FlattenPeriods(periods ...Period) (ids []string) {
} }
return return
} }
func GenerateTimeline(periods ...Period) (out []string) {
periodsByID := make(map[string]Period)
ids := FlattenPeriods(periods...)
for _, val := range periods {
id := val.GetIdentifier()
periodsByID[id] = val
}
start := periodsByID[ids[0]].GetStartTime()
for _, val := range ids {
next, err := GetNextChangeOver(start, periods...)
if err == nil {
if next.Equal(periodsByID[val].GetStartTime()) {
start = periodsByID[val].GetStartTime()
next = periodsByID[val].GetEndTime()
}
frame := fmt.Sprintf("%s\t%s\t%s\n", val, start, next)
out = append(out, frame)
start = next
}
}
return out
}