You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Common Expression Language (CEL) is a non-Turing complete language designed
for simplicity, speed, safety, and
portability. CEL's C-like syntax looks nearly identical to equivalent expressions in C++, Go, Java, and TypeScript. CEL
is ideal for lightweight expression evaluation when a fully sandboxed scripting language is too resource intensive.
// Check whether a resource name starts with a group name.resource.name.startsWith("/groups/" + auth.claims.group)
// Determine whether the request is in the permitted time window.request.time-resource.age<duration("24h")
// Check whether all resource names in a list match a given filter.auth.claims.email_verified&&resources.all(r,r.startsWith(auth.claims.email))
Getting Started
This project includes a CEL-parser and an interpreter which means that it can be used to evaluate CEL-expressions. The
library aims to be very simple to use, while still being fast, safe, and customizable.
fnmain(){let program = Program::compile("add(2, 3) == 5").unwrap();letmut context = Context::default();
context.add_function("add", |a:i64,b:i64| a + b);let value = program.execute(&context).unwrap();assert_eq!(value,true.into());}
Examples
Check out these other examples to learn how to use this library:
Simple - A simple example of how to use the library.
Variables - Passing variables and using them in your program.
Functions - Defining and using custom functions in your program.