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

Function optMap

cel/library.go:607–649  ·  view source on GitHub ↗
(meh MacroExprFactory, target ast.Expr, args []ast.Expr)

Source from the content-addressed store, hash-verified

605}
606
607func optMap(meh MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *Error) {
608 varIdent := args[0]
609 varName := ""
610 switch varIdent.Kind() {
611 case ast.IdentKind:
612 varName = varIdent.AsIdent()
613 default:
614 return nil, meh.NewError(varIdent.ID(), "optMap() variable name must be a simple identifier")
615 }
616 mapExpr := args[1]
617 targetIdent := target
618 if target.Kind() != ast.IdentKind {
619 targetIdent = meh.NewIdent(targetVar)
620 }
621 res := meh.NewCall(
622 operators.Conditional,
623 meh.NewMemberCall(hasValueFunc, targetIdent),
624 meh.NewCall(optionalOfFunc,
625 meh.NewComprehension(
626 meh.NewList(),
627 unusedIterVar,
628 varName,
629 meh.NewMemberCall(valueFunc, meh.Copy(targetIdent)),
630 meh.NewLiteral(types.False),
631 meh.NewIdent(varName),
632 mapExpr,
633 ),
634 ),
635 meh.NewCall(optionalNoneFunc),
636 )
637 if target.Kind() != ast.IdentKind {
638 return meh.NewComprehension(
639 meh.NewList(),
640 unusedIterVar,
641 targetVar,
642 target,
643 meh.NewLiteral(types.False),
644 meh.NewIdent(targetVar),
645 res,
646 ), nil
647 }
648 return res, nil
649}
650
651func optFlatMap(meh MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *Error) {
652 varIdent := args[0]

Callers

nothing calls this directly

Calls 11

KindMethod · 0.65
AsIdentMethod · 0.65
NewErrorMethod · 0.65
IDMethod · 0.65
NewIdentMethod · 0.65
NewCallMethod · 0.65
NewMemberCallMethod · 0.65
NewComprehensionMethod · 0.65
NewListMethod · 0.65
CopyMethod · 0.65
NewLiteralMethod · 0.65

Tested by

no test coverage detected