A library for Dart developers.
Created from templates made available by Stagehand under a BSD-style license.
Usage
A simple usage example:
import 'package:lambda/flurine_lambda.dart';
const TIME = 'tm';
const CONCAT = 'cc';
void main() async {
Handler.registerMany({
CONST: () => ConstHandler(),
TIME: () => TimeHandler(),
CONCAT: () => ConcatHandler(),
});
await Vein.init();
final lambda = Lambda.parse('\$tm(2)\$');
await lambda.execute();
lambda.vein.listen(onData);
}
void onData(data) {
print(data);
}
In above formula :
- 'tm' is Lambda keyword,
- 2 (integer) is argument which is handled by [TimeHandler]
- whole lambda should be wrapped between $ sign.
- handlers should be registerd first.
Here whole data is processed behind single Isolate (here [Vein]) which should be initialized first.
I don't where you can use this library or an idea like this but here it is.
class TimeHandler extends Handler {
@override
Future compute() async {
return DateTime.now().second;
}
@override
Duration get repeatingDuration => Duration(seconds:params.last);
}
class CounterHandler extends Handler {
@override
Duration get repeatingDuration => null;
int begin, end, step,current;
@override
set params(List params) {
this.params = params;
begin = params[0];
end = params[1];
step = params[2];
current = params[3];
}
@override
Future compute() async {
if (current == null || current > end) current = begin;
int temp = current;
current = current + step;
return temp;
}
}
class ConcatHandler extends Handler{
@override
Duration get repeatingDuration => null;
@override
Future compute() async{
return params.join();
}
}