Comments (4)
@MatteoAntolini take a peek at the example on pub.dev
You'll see that the expression contains functions cos
and sin
, which are made available to the evaluator through context
. The code below shows how you might implement contains
:
var expression = Expression.parse('contains(a,b)');
var context = {
'a': 'Hello World',
'b': 'Hello',
'contains': (String a, String b) {
return a.contains(b);
}
};
final evaluator = const ExpressionEvaluator();
print(evaluator.eval(expression, context));
If we change the context for different values of a and b, we'll see false
instead of true
:
var expression = Expression.parse('contains(a,b)');
var context = {
'a': 'Hello World',
'b': 'Hi',
'contains': (String a, String b) {
return a.contains(b);
}
};
final evaluator = const ExpressionEvaluator();
print(evaluator.eval(expression, context));
I hope this helps
from expressions.
If you want to be able to call a member method of some objects, you need to implement a custom evaluator. See the example directory for an example of this.
from expressions.
Ok, but I have it in the expression.
+a empty
or +a contains "b"
How can I do it?
from expressions.
For this the parser should be changed. This is currently not supported. You can however copy the code of the default parser to your own code and alter it as you wish. If you find a solution that is generic enough, you can also do a pull request.
from expressions.
Related Issues (20)
- ? in expression HOT 10
- What if I want to use a special match expression HOT 6
- Parsing RegEx as a variable in an Expression. HOT 5
- Power function HOT 2
- Support for the truncating division operator. (~/) HOT 1
- Use of async evaluator HOT 2
- Leading and trailing spaces throw errors with Expression.parse HOT 2
- Handle assignment expressions HOT 1
- Call a method from object HOT 1
- flutter_simple_calculator >=2.0.0 depends on expressions ^0.2.3 which depends on petitparser ^4.0.2, HOT 3
- min/max function support HOT 1
- showing exponential number instead full number. please show full number. HOT 1
- Concat function HOT 1
- carriage return in expression ? HOT 2
- How to handle round function HOT 1
- type 'Null' is not a subtype of type 'Function'
- Change precedence of Operations
- The result is wrong when entering a number that is too large
- Parsing shift operations (<< and >>) fails
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from expressions.