MCPcopy Create free account
hub / github.com/cel-expr/cel-go / transformList

Function transformList

ext/comprehensions.go:298–331  ·  view source on GitHub ↗
(mef cel.MacroExprFactory, target ast.Expr, args []ast.Expr)

Source from the content-addressed store, hash-verified

296}
297
298func transformList(mef cel.MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *cel.Error) {
299 iterVar1, iterVar2, err := extractIterVars(mef, args[0], args[1])
300 if err != nil {
301 return nil, err
302 }
303
304 var transform ast.Expr
305 var filter ast.Expr
306 if len(args) == 4 {
307 filter = args[2]
308 transform = args[3]
309 } else {
310 filter = nil
311 transform = args[2]
312 }
313
314 // accumulator = accumulator + [transform]
315 step := mef.NewCall(operators.Add, mef.NewAccuIdent(), mef.NewList(transform))
316 if filter != nil {
317 // accumulator = (filter) ? accumulator + [transform] : accumulator
318 step = mef.NewCall(operators.Conditional, filter, step, mef.NewAccuIdent())
319 }
320
321 return mef.NewComprehensionTwoVar(
322 target,
323 iterVar1,
324 iterVar2,
325 mef.AccuIdentName(),
326 /*accuInit=*/ mef.NewList(),
327 /*condition=*/ mef.NewLiteral(types.True),
328 step,
329 /*result=*/ mef.NewAccuIdent(),
330 ), nil
331}
332
333func transformMap(mef cel.MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *cel.Error) {
334 iterVar1, iterVar2, err := extractIterVars(mef, args[0], args[1])

Callers

nothing calls this directly

Calls 7

extractIterVarsFunction · 0.85
NewCallMethod · 0.65
NewAccuIdentMethod · 0.65
NewListMethod · 0.65
AccuIdentNameMethod · 0.65
NewLiteralMethod · 0.65

Tested by

no test coverage detected