MCPcopy
hub / github.com/flosch/pongo2 / Evaluate

Method Evaluate

parser_expression.go:133–166  ·  view source on GitHub ↗
(ctx *ExecutionContext)

Source from the content-addressed store, hash-verified

131}
132
133func (expr *Expression) Evaluate(ctx *ExecutionContext) (*Value, *Error) {
134 v1, err := expr.expr1.Evaluate(ctx)
135 if err != nil {
136 return nil, err
137 }
138 if expr.expr2 != nil {
139 switch expr.opToken.Val {
140 case "and", "&&":
141 if !v1.IsTrue() {
142 return AsValue(false), nil
143 } else {
144 v2, err := expr.expr2.Evaluate(ctx)
145 if err != nil {
146 return nil, err
147 }
148 return AsValue(v2.IsTrue()), nil
149 }
150 case "or", "||":
151 if v1.IsTrue() {
152 return AsValue(true), nil
153 } else {
154 v2, err := expr.expr2.Evaluate(ctx)
155 if err != nil {
156 return nil, err
157 }
158 return AsValue(v2.IsTrue()), nil
159 }
160 default:
161 return nil, ctx.Error(fmt.Sprintf("unimplemented: %s", expr.opToken.Val), expr.opToken)
162 }
163 } else {
164 return v1, nil
165 }
166}
167
168func (expr *relationalExpression) Evaluate(ctx *ExecutionContext) (*Value, *Error) {
169 v1, err := expr.expr1.Evaluate(ctx)

Callers 1

ExecuteMethod · 0.95

Calls 4

AsValueFunction · 0.85
IsTrueMethod · 0.80
EvaluateMethod · 0.65
ErrorMethod · 0.45

Tested by

no test coverage detected