Skip to content

jsribar/VersionExpressionEvaluator

Repository files navigation

Evaluator for expressions with versions

A simple evaluator that verifies if a given version satisfies some logical expression like:

version:<=2.15.0 AND NOT version:=2.12.2 AND NOT version:=2.12.3

Supported Boolean operators are NOT, AND and OR, listed by precedence, from highest to lowest. For version comparisons, operators ==, = (both for equal to), != (not equal to), <, <=, > and >= are supported.

Argument passed to parse function should be a string with expression and function returns std::unique_ptr<expression_t>, a pointer to final expression object. evaluate method on this object, with version to test passed, checks if the version satisfies expression. For example:

auto expression = parse("version:<=2.15.0 AND NOT version:=2.12.2 AND NOT version:=2.12.3");
expression->evaluate(version_t{ "2.12.1" }); // returns true
expression->evaluate(version_t{ "2.15.0" }); // returns true
expression->evaluate(version_t{ "2.12.2" }); // returns false
expression->evaluate(version_t{ "2.12.3" }); // returns false

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages