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)) }