flurine_lambda

A starting point for Dart libraries or applications.


License
Other

Documentation

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();
  }

}