package goap // Helper type for parsing attributes where the value (after expansion) is of the following form // ```json // [ // // { // "@id": "some url here" // } // // ] // ``` type IdType struct { Next BaseApChain Id string } func (idtype *IdType) GetSelfOrBase() (BaseApChain, bool) { return idtype.Next, true } func (idtype *IdType) MarshalToMapWithName(name string) map[string]any { m := idtype.Next.MarshalToMap() m[name] = []map[string]any{{KEY_ID: idtype.Id}} return m } func ParseIdTypeWithName(m map[string]any, b BaseApChain, name string) (*IdType, error) { rawData1, ok := m[name] if !ok { return nil, NoRequiredFieldError{name} } data1, ok := rawData1.([]map[string]any) if !ok { return nil, BadFieldValueError{name, rawData1, []map[string]any{{}}} } if len(data1) != 1 { return nil, BadFieldArrayLengthError{name, 1, len(data1)} } rawData2, ok := data1[0][KEY_ID] if !ok { return nil, NoRequiredSubFieldError{name, KEY_ID} } data2, ok := rawData1.(string) if !ok { return nil, BadFieldValueError{name, rawData2, ""} } return &IdType{ Next: b, Id: data2, }, nil }