MCPcopy
hub / github.com/google/go-jsonnet / builtinMinArray

Function builtinMinArray

builtins.go:2330–2378  ·  view source on GitHub ↗
(i *interpreter, arguments []value)

Source from the content-addressed store, hash-verified

2328}
2329
2330func builtinMinArray(i *interpreter, arguments []value) (value, error) {
2331 arrv := arguments[0]
2332 keyFv := arguments[1]
2333 onEmpty := arguments[2]
2334
2335 arr, err := i.getArray(arrv)
2336 if err != nil {
2337 return nil, err
2338 }
2339 keyF, err := i.getFunction(keyFv)
2340 if err != nil {
2341 return nil, err
2342 }
2343 num := arr.length()
2344 if num == 0 {
2345 if onEmpty == nil {
2346 return nil, i.Error("Expected at least one element in array. Got none")
2347 } else {
2348 return onEmpty, nil
2349 }
2350 }
2351 minVal, err := arr.elements[0].getValue(i)
2352 if err != nil {
2353 return nil, err
2354 }
2355 minValKey, err := keyF.call(i, args(arr.elements[0]))
2356 if err != nil {
2357 return nil, err
2358 }
2359 for index := 1; index < num; index++ {
2360 current, err := arr.elements[index].getValue(i)
2361 if err != nil {
2362 return nil, err
2363 }
2364 currentKey, err := keyF.call(i, args(arr.elements[index]))
2365 if err != nil {
2366 return nil, err
2367 }
2368 cmp, err := valueCmp(i, minValKey, currentKey)
2369 if err != nil {
2370 return nil, err
2371 }
2372 if cmp > 0 {
2373 minVal = current
2374 minValKey = currentKey
2375 }
2376 }
2377 return minVal, nil
2378}
2379
2380func builtinMaxArray(i *interpreter, arguments []value) (value, error) {
2381 arrv := arguments[0]

Callers

nothing calls this directly

Calls 8

argsFunction · 0.85
valueCmpFunction · 0.85
getArrayMethod · 0.80
getFunctionMethod · 0.80
callMethod · 0.80
lengthMethod · 0.65
ErrorMethod · 0.65
getValueMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…