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

Function transformMap

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

Source from the content-addressed store, hash-verified

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])
335 if err != nil {
336 return nil, err
337 }
338
339 var transform ast.Expr
340 var filter ast.Expr
341 if len(args) == 4 {
342 filter = args[2]
343 transform = args[3]
344 } else {
345 filter = nil
346 transform = args[2]
347 }
348
349 // accumulator = cel.@mapInsert(accumulator, iterVar1, transform)
350 step := mef.NewCall(mapInsert, mef.NewAccuIdent(), mef.NewIdent(iterVar1), transform)
351 if filter != nil {
352 // accumulator = (filter) ? cel.@mapInsert(accumulator, iterVar1, transform) : accumulator
353 step = mef.NewCall(operators.Conditional, filter, step, mef.NewAccuIdent())
354 }
355 return mef.NewComprehensionTwoVar(
356 target,
357 iterVar1,
358 iterVar2,
359 mef.AccuIdentName(),
360 /*accuInit=*/ mef.NewMap(),
361 /*condition=*/ mef.NewLiteral(types.True),
362 step,
363 /*result=*/ mef.NewAccuIdent(),
364 ), nil
365}
366
367func transformMapEntry(mef cel.MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *cel.Error) {
368 iterVar1, iterVar2, err := extractIterVars(mef, args[0], args[1])

Callers

nothing calls this directly

Calls 8

extractIterVarsFunction · 0.85
NewCallMethod · 0.65
NewAccuIdentMethod · 0.65
NewIdentMethod · 0.65
AccuIdentNameMethod · 0.65
NewMapMethod · 0.65
NewLiteralMethod · 0.65

Tested by

no test coverage detected