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

Function optFlatMap

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

Source from the content-addressed store, hash-verified

628}
629
630func optFlatMap(meh MacroExprFactory, target ast.Expr, args []ast.Expr) (ast.Expr, *Error) {
631 varIdent := args[0]
632 varName := ""
633 switch varIdent.Kind() {
634 case ast.IdentKind:
635 varName = varIdent.AsIdent()
636 default:
637 return nil, meh.NewError(varIdent.ID(), "optFlatMap() variable name must be a simple identifier")
638 }
639 mapExpr := args[1]
640 return meh.NewCall(
641 operators.Conditional,
642 meh.NewMemberCall(hasValueFunc, target),
643 meh.NewComprehension(
644 meh.NewList(),
645 unusedIterVar,
646 varName,
647 meh.NewMemberCall(valueFunc, meh.Copy(target)),
648 meh.NewLiteral(types.False),
649 meh.NewIdent(varName),
650 mapExpr,
651 ),
652 meh.NewCall(optionalNoneFunc),
653 ), nil
654}
655
656func optUnwrap(value ref.Val) ref.Val {
657 list := value.(traits.Lister)

Callers

nothing calls this directly

Calls 11

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

Tested by

no test coverage detected