package memory import ( _ "embed" "encoding/json" "fmt" ) // The Russian read-back vocabulary lives in behavior_ru.json, not in Go source. // // It is data, not logic: a weekday name and a verb gloss are wording choices // that change independently of anything the counter does, and having them as // literals scattered through behavior.go meant every phrasing tweak was a code // diff. go:embed keeps the single-binary deploy — the JSON is compiled in, so // there is no file to install alongside mavend and no way for the two to drift. // // Parsed once at init. A malformed file is a panic, deliberately: it can only // happen if the embedded asset is broken at build time, and a daemon that comes // up with an empty vocabulary would answer with bare fact keys. //go:embed behavior_ru.json var behaviorRUJSON []byte type behaviorRU struct { Weekdays []string `json:"weekdays"` Activities map[string]string `json:"activities"` } var ( // weekdayRU — dative plural, indexed by time.Weekday. weekdayRU []string // activityRU — fact key to second-person-singular verb phrase. activityRU map[string]string ) func init() { var v behaviorRU if err := json.Unmarshal(behaviorRUJSON, &v); err != nil { panic(fmt.Sprintf("memory: behavior_ru.json: %v", err)) } if len(v.Weekdays) != 7 { panic(fmt.Sprintf("memory: behavior_ru.json: want 7 weekdays, got %d", len(v.Weekdays))) } weekdayRU, activityRU = v.Weekdays, v.Activities }