ecp_expression_language 1.0.0 copy "ecp_expression_language: ^1.0.0" to clipboard
ecp_expression_language: ^1.0.0 copied to clipboard

Library for parsing and evaluating simple expression language with additional references

example/main.dart

import 'package:ecp_expression_language/ecp_expression_language.dart';

void main() {
  var text = "title == 1&&title!=2";
  var leftReg = RegExp(r'([\w\s])+(?=(==|!=))', caseSensitive: false);
  var rightReg = RegExp(r'(?<=(==|!=)).*?((?=(&{2}|\|{2}|\)))|$)',
      caseSensitive: false, unicode: true);
  text = text.replaceAllMapped(
      leftReg, (match) => "\"${match.group(0)?.trim()}\"");
  text = text.replaceAllMapped(rightReg, (match) {
    return "\"${match.group(0)?.trim()}\"";
  });
  print(text);
  var expressionGrammarDefinition = ExpressionGrammarParser({
    // "element": TestElement(),
  });
  var parser = expressionGrammarDefinition.build();
  var result = parser.parse(text);
  var expression = result.value as Expression<bool>;
  var value = expression.evaluate();
  print(value);
}

// class TestElement extends ExpressionProviderElement {
//   Map<String, ExpressionProvider> properties = {
//     'value': ConstantExpressionProvider<String>("27"),
//   };
//
//   @override
//   String? id;
//
//   @override
//   ExpressionProvider getExpressionProvider([String? propertyName]) {
//     if (propertyName == null || propertyName == '') {
//       propertyName = 'value';
//     }
//     return properties[propertyName]!;
//   }
//
//   @override
//   ExpressionProviderElement clone(
//       ExpressionProvider<ExpressionProviderElement> parent) {
//     return this;
//   }
// }
//
// class ConstantExpressionProvider<T> extends ExpressionProvider<T> {
//   final T value;
//
//   ConstantExpressionProvider(this.value);
//
//   @override
//   Expression<T> getExpression() {
//     return ConstantExpression(value);
//   }
// }
0
likes
130
points
33
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Library for parsing and evaluating simple expression language with additional references

Homepage

License

MIT (license)

Dependencies

petitparser, rational

More

Packages that depend on ecp_expression_language