38 lines
1.2 KiB
Go
38 lines
1.2 KiB
Go
package briefing
|
|
|
|
import (
|
|
"embed"
|
|
"encoding/json"
|
|
"fmt"
|
|
"strings"
|
|
)
|
|
|
|
//go:embed assets/spc_convective_outlook_definitions.json
|
|
var spcConvectiveOutlookDefinitionAssets embed.FS
|
|
|
|
var spcOutlookBackgroundDefinitions = mustLoadSPCOutlookBackgroundDefinitions()
|
|
|
|
func mustLoadSPCOutlookBackgroundDefinitions() map[string]SPCOutlookBackgroundDefinition {
|
|
data, err := spcConvectiveOutlookDefinitionAssets.ReadFile("assets/spc_convective_outlook_definitions.json")
|
|
if err != nil {
|
|
panic(fmt.Sprintf("read embedded SPC outlook definitions: %v", err))
|
|
}
|
|
var definitions map[string]SPCOutlookBackgroundDefinition
|
|
if err := json.Unmarshal(data, &definitions); err != nil {
|
|
panic(fmt.Sprintf("decode embedded SPC outlook definitions: %v", err))
|
|
}
|
|
return definitions
|
|
}
|
|
|
|
func spcOutlookBackgroundDefinition(outlookType string, label string) *SPCOutlookBackgroundDefinition {
|
|
definition, ok := spcOutlookBackgroundDefinitions[spcOutlookDefinitionKey(outlookType, label)]
|
|
if !ok {
|
|
return nil
|
|
}
|
|
return &definition
|
|
}
|
|
|
|
func spcOutlookDefinitionKey(outlookType string, label string) string {
|
|
return strings.ToLower(strings.TrimSpace(outlookType)) + ":" + strings.ToUpper(strings.TrimSpace(label))
|
|
}
|