ExpressionEvaluator class
Handles evaluation of expressions
The default ExpressionEvaluator handles all expressions except member expressions. To create an ExpressionEvaluator that handles member expressions, set a list of MemberAccessor instances to the memberAccessors argument of the constructor.
For example:
var evaluator = ExpressionEvaluator(memberAccessors: MemberAccessor<Person>({ 'firstname': (v)=>v.firstname, 'lastname': (v)=>v.lastname, 'address': (v)=>v.address }), MemberAccessor<Address>({ 'street': (v)=>v.street, 'locality': (v)=>v.locality, }), );
The MemberAccessor.mapAccessor
can be used to access Map items with
member access syntax.
An async ExpressionEvaluator can be created with the ExpressionEvaluator.async constructor. An async expression evaluator can handle operands and arguments that are streams or futures and will apply the expression on each value of those streams or futures. The result is always a stream.
For example:
var evaluator = ExpressionEvaluator.async();
var expression = Expression.parse('x > 70');
var r = evaluator.eval(expression, {'x': Stream.fromIterable(50, 80
)});
r.forEach(print); // prints false and true
Constructors
-
ExpressionEvaluator.new({List<
MemberAccessor> memberAccessors = const []}) -
const
-
ExpressionEvaluator.async({List<
MemberAccessor> memberAccessors}) -
constfactory
Properties
- hashCode → int
-
The hash code for this object.
no setterinherited
-
memberAccessors
→ List<
MemberAccessor> -
final
- runtimeType → Type
-
A representation of the runtime type of the object.
no setterinherited
Methods
-
eval(
Expression expression, Map< String, dynamic> context, {void onValueAssigned(String key, dynamic value)?}) → dynamic -
evalBinaryExpression(
BinaryExpression expression, Map< String, dynamic> context, {void onValueAssigned(String key, dynamic value)?}) → dynamic -
evalCallExpression(
CallExpression expression, Map< String, dynamic> context) → dynamic -
evalConditionalExpression(
ConditionalExpression expression, Map< String, dynamic> context) → dynamic -
evalIndexExpression(
IndexExpression expression, Map< String, dynamic> context, {bool nullable = false}) → dynamic -
evalLiteral(
Literal literal, Map< String, dynamic> context) → dynamic -
evalMemberExpression(
MemberExpression expression, Map< String, dynamic> context, {bool nullable = false}) → dynamic -
evalThis(
ThisExpression expression, Map< String, dynamic> context) → dynamic -
evalUnaryExpression(
UnaryExpression expression, Map< String, dynamic> context) → dynamic -
evalVariable(
Variable variable, Map< String, dynamic> context) → dynamic -
getMember(
dynamic obj, String member, {bool nullable = false}) → dynamic -
noSuchMethod(
Invocation invocation) → dynamic -
Invoked when a nonexistent method or property is accessed.
inherited
-
toString(
) → String -
A string representation of this object.
inherited
Operators
-
operator ==(
Object other) → bool -
The equality operator.
inherited