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({List<MemberAccessor> memberAccessors = const []})
const
ExpressionEvaluator.async({List<MemberAccessor> memberAccessors})
const
factory

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) → dynamic
evalBinaryExpression(BinaryExpression expression, Map<String, dynamic> context) → dynamic
evalCallExpression(CallExpression expression, Map<String, dynamic> context) → dynamic
evalConditionalExpression(ConditionalExpression expression, Map<String, dynamic> context) → dynamic
evalIndexExpression(IndexExpression expression, Map<String, dynamic> context) → dynamic
evalLiteral(Literal literal, Map<String, dynamic> context) → dynamic
evalMemberExpression(MemberExpression expression, Map<String, dynamic> context) → 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) → 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