diff --git a/internal/statsapi/feed.go b/internal/statsapi/feed.go index 95438d7..1906a82 100644 --- a/internal/statsapi/feed.go +++ b/internal/statsapi/feed.go @@ -36,6 +36,12 @@ type about struct { CaptivatingIndex json.Number } +func expand(arr []any, idx int) []any { + front := append(arr[:idx], nil) + all := append(front, arr[idx:]) + return all +} + func setValue(obj any, key string, value any) error { var err error switch v := obj.(type) { @@ -51,13 +57,7 @@ func setValue(obj any, key string, value any) error { break } - if len(v) <= idx { - arr := make([]any, idx+1) - for i, val := range v { - arr[i] = val - } - v = arr - } + v = expand(v, idx) v[idx] = value default: err = errors.New("couldn't determine type") @@ -66,16 +66,6 @@ func setValue(obj any, key string, value any) error { return err } -func expand(v []any, idx int) { - if len(v) <= idx { - arr := make([]any, idx+1) - for i, val := range v { - arr[i] = val - } - v = arr - } -} - func patch(obj any, path string, value any) error { var err error first, rest, found := strings.Cut(path, "/") @@ -94,7 +84,7 @@ func patch(obj any, path string, value any) error { break } - expand(v, idx) + v = expand(v, idx) err = patch(v[idx], rest, value) default: err = errors.New("couldn't determine type")