MCPcopy
hub / github.com/TomWright/dasel / init

Function init

execution/execute_binary.go:74–197  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

72}
73
74func init() {
75 binaryExpressionExecutors[lexer.Plus] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
76 return left.Add(right)
77 })
78 binaryExpressionExecutors[lexer.Dash] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
79 return left.Subtract(right)
80 })
81 binaryExpressionExecutors[lexer.Star] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
82 return left.Multiply(right)
83 })
84 binaryExpressionExecutors[lexer.Slash] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
85 return left.Divide(right)
86 })
87 binaryExpressionExecutors[lexer.Percent] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
88 return left.Modulo(right)
89 })
90 binaryExpressionExecutors[lexer.GreaterThan] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
91 return left.GreaterThan(right)
92 })
93 binaryExpressionExecutors[lexer.GreaterThanOrEqual] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
94 return left.GreaterThanOrEqual(right)
95 })
96 binaryExpressionExecutors[lexer.LessThan] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
97 return left.LessThan(right)
98 })
99 binaryExpressionExecutors[lexer.LessThanOrEqual] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
100 return left.LessThanOrEqual(right)
101 })
102 binaryExpressionExecutors[lexer.Equal] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
103 return left.Equal(right)
104 })
105 binaryExpressionExecutors[lexer.NotEqual] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
106 return left.NotEqual(right)
107 })
108 binaryExpressionExecutors[lexer.Equals] = func(ctx context.Context, expr ast.BinaryExpr, value *model.Value, options *Options) (*model.Value, error) {
109 if leftVar, ok := expr.Left.(ast.VariableExpr); ok {
110 // It is expected that the left side of an assignment may not exist yet.
111 if _, ok := options.Vars[leftVar.Name]; !ok {
112 options.Vars[leftVar.Name] = model.NewNullValue()
113 }
114 }
115 return basicBinaryExpressionExecutorFn(executeAssign)(ctx, expr, value, options)
116 }
117 binaryExpressionExecutors[lexer.And] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
118 leftBool, err := left.BoolValue()
119 if err != nil {
120 return nil, fmt.Errorf("error getting left bool value: %w", err)
121 }
122 rightBool, err := right.BoolValue()
123 if err != nil {
124 return nil, fmt.Errorf("error getting right bool value: %w", err)
125 }
126 return model.NewBoolValue(leftBool && rightBool), nil
127 })
128 binaryExpressionExecutors[lexer.Or] = basicBinaryExpressionExecutorFn(func(ctx context.Context, left *model.Value, right *model.Value, _ ast.BinaryExpr) (*model.Value, error) {
129 leftBool, err := left.BoolValue()
130 if err != nil {
131 return nil, fmt.Errorf("error getting left bool value: %w", err)

Callers

nothing calls this directly

Calls 15

NewNullValueFunction · 0.92
NewBoolValueFunction · 0.92
ExecuteASTFunction · 0.85
AddMethod · 0.80
SubtractMethod · 0.80
MultiplyMethod · 0.80
DivideMethod · 0.80
ModuloMethod · 0.80
GreaterThanMethod · 0.80
GreaterThanOrEqualMethod · 0.80
LessThanMethod · 0.80

Tested by

no test coverage detected