(value DaselValue, expr string)
| 112 | } |
| 113 | |
| 114 | func selectStrings(value DaselValue, expr string) ([]string, error) { |
| 115 | selected, _, err := dasel.Select(context.Background(), value, expr) |
| 116 | if err != nil { |
| 117 | return selectStringsV2(value, expr) |
| 118 | } |
| 119 | |
| 120 | outer, isSlice := selected.([]any) |
| 121 | if !isSlice { |
| 122 | return nil, fmt.Errorf("expected []any, got %T", selected) |
| 123 | } |
| 124 | |
| 125 | // Unwrap single-element wrapper if present. |
| 126 | if len(outer) == 1 { |
| 127 | if inner, isInner := outer[0].([]any); isInner { |
| 128 | outer = inner |
| 129 | } |
| 130 | } |
| 131 | |
| 132 | results := make([]string, 0, len(outer)) |
| 133 | for _, v := range outer { |
| 134 | if str, isStr := v.(string); isStr { |
| 135 | results = append(results, str) |
| 136 | } |
| 137 | } |
| 138 | return results, nil |
| 139 | } |
| 140 | |
| 141 | func selectStringsV2(value DaselValue, expr string) ([]string, error) { |
| 142 | selected, err := v2dasel.Select(value, expr) |
searching dependent graphs…